|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.lucene.search.Query org.apache.lucene.search.spans.SpanQuery org.apache.lucene.search.spans.FieldMaskingSpanQuery
public class FieldMaskingSpanQuery
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.
Constructor Summary | |
---|---|
FieldMaskingSpanQuery(SpanQuery maskedQuery,
String maskedField)
|
Method Summary | |
---|---|
Weight |
createWeight(Searcher searcher)
Expert: Constructs an appropriate Weight implementation for this query. |
boolean |
equals(Object o)
|
void |
extractTerms(Set<Term> terms)
Expert: adds all terms occurring in this query to the terms set. |
String |
getField()
Returns the name of the field matched by this query. |
SpanQuery |
getMaskedQuery()
|
Spans |
getSpans(IndexReader reader)
Expert: Returns the matches for this query in an index. |
int |
hashCode()
|
Query |
rewrite(IndexReader reader)
Expert: called to re-write queries into primitive queries. |
String |
toString(String field)
Prints a query to a string, with field assumed to be the
default field and omitted. |
Methods inherited from class org.apache.lucene.search.Query |
---|
clone, combine, getBoost, getSimilarity, mergeBooleanQueries, setBoost, toString, weight |
Methods inherited from class java.lang.Object |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
public FieldMaskingSpanQuery(SpanQuery maskedQuery, String maskedField)
Method Detail |
---|
public String getField()
SpanQuery
getField
in class SpanQuery
public SpanQuery getMaskedQuery()
public Spans getSpans(IndexReader reader) throws IOException
SpanQuery
getSpans
in class SpanQuery
IOException
public void extractTerms(Set<Term> terms)
Query
rewritten
form.
extractTerms
in class Query
public Weight createWeight(Searcher searcher) throws IOException
Query
Only implemented by primitive queries, which re-write to themselves.
createWeight
in class SpanQuery
IOException
public Query rewrite(IndexReader reader) throws IOException
Query
rewrite
in class Query
IOException
public String toString(String field)
Query
field
assumed to be the
default field and omitted.
The representation used is one that is supposed to be readable
by QueryParser
. However,
there are the following limitations:
toString
in class Query
public boolean equals(Object o)
equals
in class Query
public int hashCode()
hashCode
in class Query
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |