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, then `MultiTermQuery.CONSTANT_SCORE_BOOLEAN_QUERY_REWRITE` is used. Otherwise, `MultiTermQuery.CONSTANT_SCORE_FILTER_REWRITE` is used.

### Field Summary

Fields
`static double` `DEFAULT_DOC_COUNT_PERCENT`
`static int` `DEFAULT_TERM_COUNT_CUTOFF`

### Constructor Summary

Constructors
Constructor and Description
`MultiTermQuery.ConstantScoreAutoRewrite()`

### Method Summary

Methods
`protected void` `addClause(BooleanQuery topLevel, Term term, int docFreq, float boost, TermContext states)`
`protected void` `addClause(Q topLevel, Term term, int docCount, float boost)` Add a MultiTermQuery term to the top-level query
`boolean` `equals(Object obj)`
`double` `getDocCountPercent()`
`int` `getTermCountCutoff()`
`protected BooleanQuery` `getTopLevelQuery()` Return a suitable top-level Query for holding all expanded terms.
`int` `hashCode()`
`Query` `rewrite(IndexReader reader, MultiTermQuery query)`
`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, then `MultiTermQuery.CONSTANT_SCORE_FILTER_REWRITE` is used.
`void` `setTermCountCutoff(int count)` If the number of terms in this query is equal to or larger than this setting then `MultiTermQuery.CONSTANT_SCORE_FILTER_REWRITE` is used.

### Methods inherited from class org.apache.lucene.search.MultiTermQuery.RewriteMethod

`getTermsEnum`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### DEFAULT_TERM_COUNT_CUTOFF

    public static int DEFAULT_TERM_COUNT_CUTOFF

#### DEFAULT_DOC_COUNT_PERCENT

    public static double DEFAULT_DOC_COUNT_PERCENT

### Constructor Detail

#### MultiTermQuery.ConstantScoreAutoRewrite

    public MultiTermQuery.ConstantScoreAutoRewrite()

### Method Detail

#### setTermCountCutoff

    public void setTermCountCutoff(int count)

If the number of terms in this query is equal to or larger than this setting then `MultiTermQuery.CONSTANT_SCORE_FILTER_REWRITE` is 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, then `MultiTermQuery.CONSTANT_SCORE_FILTER_REWRITE` is 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:
  `rewrite` in class `MultiTermQuery.RewriteMethod`
Throws:
  `IOException`

#### hashCode

    public int hashCode()

Overrides:
  `hashCode` in class `Object`

#### equals

    public boolean equals(Object obj)

Overrides:
  `equals` in class `Object`

#### addClause

    protected final void addClause(Q topLevel,
                 Term term,
                 int docCount,
                 float boost)
                            throws IOException

Add a MultiTermQuery term to the top-level query

Throws:
  `IOException`