Class SpanMultiTermQueryWrapper<Q extends MultiTermQuery>
- java.lang.Object
-
- org.apache.lucene.search.Query
-
- org.apache.lucene.search.spans.SpanQuery
-
- org.apache.lucene.search.spans.SpanMultiTermQueryWrapper<Q>
-
- All Implemented Interfaces:
Serializable
,Cloneable
- Direct Known Subclasses:
SpanRegexQuery
public class SpanMultiTermQueryWrapper<Q extends MultiTermQuery> extends SpanQuery
Wraps anyMultiTermQuery
as aSpanQuery
, so it can be nested within other SpanQuery classes.The query is rewritten by default to a
SpanOrQuery
containing the expanded terms, but this can be customized.Example:
WildcardQuery wildcard = new WildcardQuery(new Term("field", "bro?n")); SpanQuery spanWildcard = new SpanMultiTermQueryWrapper<WildcardQuery>(wildcard); // do something with spanWildcard, such as use it in a SpanFirstQuery
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
SpanMultiTermQueryWrapper.SpanRewriteMethod
Abstract class that defines how the query is rewritten.static class
SpanMultiTermQueryWrapper.TopTermsSpanBooleanQueryRewrite
A rewrite method that first translates each term into a SpanTermQuery in aBooleanClause.Occur.SHOULD
clause in a BooleanQuery, and keeps the scores as computed by the query.
-
Field Summary
Fields Modifier and Type Field Description protected Q
query
static SpanMultiTermQueryWrapper.SpanRewriteMethod
SCORING_SPAN_QUERY_REWRITE
A rewrite method that first translates each term into a SpanTermQuery in aBooleanClause.Occur.SHOULD
clause in a BooleanQuery, and keeps the scores as computed by the query.
-
Constructor Summary
Constructors Constructor Description SpanMultiTermQueryWrapper(Q query)
Create a new SpanMultiTermQueryWrapper.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(Object obj)
String
getField()
Returns the name of the field matched by this query.SpanMultiTermQueryWrapper.SpanRewriteMethod
getRewriteMethod()
Expert: returns the rewriteMethodSpans
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.void
setRewriteMethod(SpanMultiTermQueryWrapper.SpanRewriteMethod rewriteMethod)
Expert: sets the rewrite method.String
toString(String field)
Prints a query to a string, withfield
assumed to be the default field and omitted.-
Methods inherited from class org.apache.lucene.search.spans.SpanQuery
createWeight
-
Methods inherited from class org.apache.lucene.search.Query
clone, combine, extractTerms, getBoost, getSimilarity, mergeBooleanQueries, setBoost, toString, weight
-
-
-
-
Field Detail
-
query
protected final Q extends MultiTermQuery query
-
SCORING_SPAN_QUERY_REWRITE
public static final SpanMultiTermQueryWrapper.SpanRewriteMethod SCORING_SPAN_QUERY_REWRITE
A rewrite method that first translates each term into a SpanTermQuery in aBooleanClause.Occur.SHOULD
clause in a BooleanQuery, and keeps the scores as computed by the query.
-
-
Constructor Detail
-
SpanMultiTermQueryWrapper
public SpanMultiTermQueryWrapper(Q query)
Create a new SpanMultiTermQueryWrapper.- Parameters:
query
- Query to wrap.NOTE: This will call
MultiTermQuery.setRewriteMethod(MultiTermQuery.RewriteMethod)
on the wrappedquery
, changing its rewrite method to a suitable one for spans. Be sure to not change the rewrite method on the wrapped query afterwards! Doing so will throwUnsupportedOperationException
on rewriting this query! In Lucene 3.x, MultiTermQuery allows queries to rewrite to different field names, but SpanQuery needs a fixed field. The wrapped query must therefore support getField() or getTerm().- Throws:
IllegalArgumentException
- if the wrapped query does not provide getField() or getTerm().
-
-
Method Detail
-
getRewriteMethod
public final SpanMultiTermQueryWrapper.SpanRewriteMethod getRewriteMethod()
Expert: returns the rewriteMethod
-
setRewriteMethod
public final void setRewriteMethod(SpanMultiTermQueryWrapper.SpanRewriteMethod rewriteMethod)
Expert: sets the rewrite method. This only makes sense to be a span rewrite method.
-
getSpans
public Spans getSpans(IndexReader reader) throws IOException
Description copied from class:SpanQuery
Expert: Returns the matches for this query in an index. Used internally to search for spans.- Specified by:
getSpans
in classSpanQuery
- Throws:
IOException
-
getField
public String getField()
Description copied from class:SpanQuery
Returns the name of the field matched by this query.
-
toString
public String toString(String field)
Description copied from class:Query
Prints a query to a string, withfield
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:- If the query was created by the parser, the printed representation may not be exactly what was parsed. For example, characters that need to be escaped will be represented without the required backslash.
- Some of the more complicated queries (e.g. span queries) don't have a representation that can be parsed by QueryParser.
-
rewrite
public Query rewrite(IndexReader reader) throws IOException
Description copied from class:Query
Expert: called to re-write queries into primitive queries. For example, a PrefixQuery will be rewritten into a BooleanQuery that consists of TermQuerys.- Overrides:
rewrite
in classQuery
- Throws:
IOException
-
-