Package org.apache.lucene.search
Class MultiTermQuery.ConstantScoreAutoRewrite
- java.lang.Object
-
- org.apache.lucene.search.MultiTermQuery.RewriteMethod
-
- org.apache.lucene.search.MultiTermQuery.ConstantScoreAutoRewrite
-
- Enclosing class:
- MultiTermQuery
public static class MultiTermQuery.ConstantScoreAutoRewrite extends MultiTermQuery.RewriteMethod
A rewrite method that tries to pick the best constant-score rewrite method based on term and document counts from the query. If both the number of terms and documents is small enough, thenMultiTermQuery.CONSTANT_SCORE_BOOLEAN_QUERY_REWRITEis used. Otherwise,MultiTermQuery.CONSTANT_SCORE_FILTER_REWRITEis used.
-
-
Field Summary
Fields Modifier and Type Field Description static doubleDEFAULT_DOC_COUNT_PERCENTstatic intDEFAULT_TERM_COUNT_CUTOFF
-
Constructor Summary
Constructors Constructor Description ConstantScoreAutoRewrite()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidaddClause(BooleanQuery topLevel, Term term, int docFreq, float boost, TermContext states)protected voidaddClause(Q topLevel, Term term, int docCount, float boost)Add a MultiTermQuery term to the top-level querybooleanequals(Object obj)doublegetDocCountPercent()intgetTermCountCutoff()protected BooleanQuerygetTopLevelQuery()Return a suitable top-level Query for holding all expanded terms.inthashCode()Queryrewrite(IndexReader reader, MultiTermQuery query)voidsetDocCountPercent(double percent)If the number of documents to be visited in the postings exceeds this specified percentage of the maxDoc() for the index, thenMultiTermQuery.CONSTANT_SCORE_FILTER_REWRITEis used.voidsetTermCountCutoff(int count)If the number of terms in this query is equal to or larger than this setting thenMultiTermQuery.CONSTANT_SCORE_FILTER_REWRITEis used.-
Methods inherited from class org.apache.lucene.search.MultiTermQuery.RewriteMethod
getTermsEnum
-
-
-
-
Method Detail
-
setTermCountCutoff
public void setTermCountCutoff(int count)
If the number of terms in this query is equal to or larger than this setting thenMultiTermQuery.CONSTANT_SCORE_FILTER_REWRITEis used.
-
getTermCountCutoff
public int getTermCountCutoff()
- See Also:
setTermCountCutoff(int)
-
setDocCountPercent
public void setDocCountPercent(double percent)
If the number of documents to be visited in the postings exceeds this specified percentage of the maxDoc() for the index, thenMultiTermQuery.CONSTANT_SCORE_FILTER_REWRITEis used.- Parameters:
percent- 0.0 to 100.0
-
getDocCountPercent
public double getDocCountPercent()
- See Also:
setDocCountPercent(double)
-
getTopLevelQuery
protected BooleanQuery getTopLevelQuery()
Return a suitable top-level Query for holding all expanded terms.
-
addClause
protected void addClause(BooleanQuery topLevel, Term term, int docFreq, float boost, TermContext states)
-
rewrite
public Query rewrite(IndexReader reader, MultiTermQuery query) throws IOException
- Specified by:
rewritein classMultiTermQuery.RewriteMethod- Throws:
IOException
-
addClause
protected final void addClause(Q topLevel, Term term, int docCount, float boost) throws IOExceptionAdd a MultiTermQuery term to the top-level query- Throws:
IOException
-
-