Home » lucene-3.0.1-src » org.apache » lucene » search » spans » [javadoc | source]
public class: FieldMaskingSpanQuery [javadoc | source]

All Implemented Interfaces:
    Cloneable, Serializable

Wrapper to allow SpanQuery objects participate in composite single-field SpanQueries by 'lying' about their search field. That is, the masked SpanQuery will function as normal, but SpanQuery#getField() simply hands back the value supplied in this class's constructor.

This can be used to support Queries like SpanNearQuery or SpanOrQuery across different fields, which is not ordinarily permitted.

This can be useful for denormalized relational data: for example, when indexing a document with conceptually many 'children':

 teacherid: 1
 studentfirstname: james
 studentsurname: jones
 teacherid: 2
 studenfirstname: james
 studentsurname: smith
 studentfirstname: sally
 studentsurname: jones

a SpanNearQuery with a slop of 0 can be applied across two SpanTermQuery objects as follows:

   SpanQuery q1  = new SpanTermQuery(new Term("studentfirstname", "james"));
   SpanQuery q2  = new SpanTermQuery(new Term("studentsurname", "jones"));
   SpanQuery q2m new FieldMaskingSpanQuery(q2, "studentfirstname");
   Query q = new SpanNearQuery(new SpanQuery[]{q1, q2m}, -1, false);
to search for 'studentfirstname:james studentsurname:jones' and find teacherid 1 without matching teacherid 2 (which has a 'james' in position 0 and 'jones' in position 1).

Note: as #getField() returns the masked field, scoring will be done using the norms of the field name supplied. This may lead to unexpected scoring behaviour.

 public FieldMaskingSpanQuery(SpanQuery maskedQuery,
    String maskedField) 
Method from org.apache.lucene.search.spans.FieldMaskingSpanQuery Summary:
createWeight,   equals,   extractTerms,   getField,   getMaskedQuery,   getSimilarity,   getSpans,   hashCode,   rewrite,   toString
Methods from org.apache.lucene.search.spans.SpanQuery:
createWeight,   getField,   getSpans
Methods from org.apache.lucene.search.Query:
clone,   combine,   createWeight,   equals,   extractTerms,   getBoost,   getSimilarity,   hashCode,   mergeBooleanQueries,   rewrite,   setBoost,   toString,   toString,   weight
Methods from java.lang.Object:
clone,   equals,   finalize,   getClass,   hashCode,   notify,   notifyAll,   toString,   wait,   wait,   wait
Method from org.apache.lucene.search.spans.FieldMaskingSpanQuery Detail:
 public Weight createWeight(Searcher searcher) throws IOException 
 public boolean equals(Object o) 
 public  void extractTerms(Set<Term> terms) 
 public String getField() 
 public SpanQuery getMaskedQuery() 
 public Similarity getSimilarity(Searcher searcher) 
 public Spans getSpans(IndexReader reader) throws IOException 
 public int hashCode() 
 public Query rewrite(IndexReader reader) throws IOException 
 public String toString(String field)