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
    Modifier and Type | Field and Description
    --- | ---
    `static double` | `DEFAULT_DOC_COUNT_PERCENT`
    `static int` | `DEFAULT_TERM_COUNT_CUTOFF`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `MultiTermQuery.ConstantScoreAutoRewrite()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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`

Copyright © 2000-2013 Apache Software Foundation. All Rights Reserved.