Package org.apache.lucene.search

# Class TopTermsRewrite<B>

java.lang.Object
org.apache.lucene.search.MultiTermQuery.RewriteMethod
org.apache.lucene.search.TopTermsRewrite<B>

Direct Known Subclasses:
  `MultiTermQuery.TopTermsBlendedFreqScoringRewrite`, `MultiTermQuery.TopTermsBoostOnlyBooleanQueryRewrite`, `MultiTermQuery.TopTermsScoringBooleanQueryRewrite`

public abstract class TopTermsRewrite<B> extends MultiTermQuery.RewriteMethod
Base rewrite method for collecting only the top terms via a priority queue.

NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.
  Only public to be accessible by spans package.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `TopTermsRewrite(int size)`
  Create a TopTermsBooleanQueryRewrite for at most `size` terms.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected final void`
  `addClause(B topLevel, Term term, int docCount, float boost)`
  Add a MultiTermQuery term to the top-level query builder.
  `protected abstract void`
  `addClause(B topLevel, Term term, int docCount, float boost, TermStates states)`
  `protected abstract Query`
  `build(B builder)`
  Finalize the creation of the query from the builder.
  `boolean`
  `equals(Object obj)`
  `protected abstract int`
  `getMaxSize()`
  return the maximum size of the priority queue (for boolean rewrites this is BooleanQuery#getMaxClauseCount).
  `int`
  `getSize()`
  return the maximum priority queue size
  `protected abstract B`
  `getTopLevelBuilder()`
  Return a suitable builder for the top-level Query for holding all expanded terms.
  `int`
  `hashCode()`
  `final Query`
  `rewrite(IndexSearcher indexSearcher, MultiTermQuery query)`

  ### 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`

- ## Constructor Details

  - ### TopTermsRewrite

    public TopTermsRewrite(int size)
    Create a TopTermsBooleanQueryRewrite for at most `size` terms.

    NOTE: if `IndexSearcher.getMaxClauseCount()` is smaller than `size`, then it will be used instead.

- ## Method Details

  - ### getSize

    public int getSize()
    return the maximum priority queue size

  - ### getMaxSize

    protected abstract int getMaxSize()
    return the maximum size of the priority queue (for boolean rewrites this is BooleanQuery#getMaxClauseCount).

  - ### rewrite

    public final Query rewrite(IndexSearcher indexSearcher, 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`

  - ### getTopLevelBuilder

    protected abstract B getTopLevelBuilder() throws IOException
    Return a suitable builder for the top-level Query for holding all expanded terms.
    Throws:
      `IOException`

  - ### build

    protected abstract Query build(B builder)
    Finalize the creation of the query from the builder.

  - ### addClause

    protected final void addClause(B topLevel, Term term, int docCount, float boost) throws IOException
    Add a MultiTermQuery term to the top-level query builder.
    Throws:
      `IOException`

  - ### addClause

    protected abstract void addClause(B topLevel, Term term, int docCount, float boost, TermStates states) throws IOException
    Throws:
      `IOException`