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
public class SpanMultiTermQueryWrapper<Q extends MultiTermQuery> extends SpanQuery
Wraps anyMultiTermQueryas aSpanQuery, so it can be nested within other SpanQuery classes.The query is rewritten by default to a
SpanOrQuerycontaining 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 classSpanMultiTermQueryWrapper.SpanRewriteMethodAbstract class that defines how the query is rewritten.static classSpanMultiTermQueryWrapper.TopTermsSpanBooleanQueryRewriteA rewrite method that first translates each term into a SpanTermQuery in aBooleanClause.Occur.SHOULDclause in a BooleanQuery, and keeps the scores as computed by the query.
-
Field Summary
Fields Modifier and Type Field Description protected Qquerystatic SpanMultiTermQueryWrapper.SpanRewriteMethodSCORING_SPAN_QUERY_REWRITEA rewrite method that first translates each term into a SpanTermQuery in aBooleanClause.Occur.SHOULDclause 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 booleanequals(Object obj)StringgetField()Returns the name of the field matched by this query.SpanMultiTermQueryWrapper.SpanRewriteMethodgetRewriteMethod()Expert: returns the rewriteMethodSpansgetSpans(IndexReader reader)Expert: Returns the matches for this query in an index.inthashCode()Queryrewrite(IndexReader reader)Expert: called to re-write queries into primitive queries.voidsetRewriteMethod(SpanMultiTermQueryWrapper.SpanRewriteMethod rewriteMethod)Expert: sets the rewrite method.StringtoString(String field)Prints a query to a string, withfieldassumed 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.SHOULDclause 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 throwUnsupportedOperationExceptionon 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:SpanQueryExpert: Returns the matches for this query in an index. Used internally to search for spans.- Specified by:
getSpansin classSpanQuery- Throws:
IOException
-
getField
public String getField()
Description copied from class:SpanQueryReturns the name of the field matched by this query.
-
toString
public String toString(String field)
Description copied from class:QueryPrints a query to a string, withfieldassumed 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:QueryExpert: called to re-write queries into primitive queries. For example, a PrefixQuery will be rewritten into a BooleanQuery that consists of TermQuerys.- Overrides:
rewritein classQuery- Throws:
IOException
-
-