java.lang.Object | |||
↳ | org.apache.lucene.search.Query | ||
↳ | org.apache.lucene.search.spans.SpanQuery | ||
↳ | org.apache.lucene.search.spans.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 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 Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Expert: Constructs an appropriate Weight implementation for this query.
| |||||||||||
Expert: adds all terms occurring in this query to the terms set.
| |||||||||||
Returns the name of the field matched by this query.
| |||||||||||
This method is deprecated.
Instead of using "runtime" subclassing/delegation, subclass the Weight instead.
| |||||||||||
Expert: Returns the matches for this query in an index.
| |||||||||||
Expert: called to re-write queries into primitive queries.
| |||||||||||
Prints a query to a string, with
field assumed to be the
default field and omitted. |
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
org.apache.lucene.search.spans.SpanQuery
| |||||||||||
From class
org.apache.lucene.search.Query
| |||||||||||
From class
java.lang.Object
|
Expert: Constructs an appropriate Weight implementation for this query.
Only implemented by primitive queries, which re-write to themselves.
IOException |
---|
Expert: adds all terms occurring in this query to the terms set. Only
works if this query is in its rewritten
form.
This method is deprecated.
Instead of using "runtime" subclassing/delegation, subclass the Weight instead.
Expert: Returns the Similarity implementation to be used for this query. Subclasses may override this method to specify their own Similarity implementation, perhaps one that delegates through that of the Searcher. By default the Searcher's Similarity implementation is returned.
Expert: Returns the matches for this query in an index. Used internally to search for spans.
IOException |
---|
Expert: called to re-write queries into primitive queries. For example, a PrefixQuery will be rewritten into a BooleanQuery that consists of TermQuerys.
IOException |
---|
Prints a query to a string, with 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: