## org.apache.lucene.search
Class TopTermsRewrite<Q extends Query>

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

All Implemented Interfaces:
  Serializable

Direct Known Subclasses:
  MultiTermQuery.TopTermsBoostOnlyBooleanQueryRewrite, MultiTermQuery.TopTermsScoringBooleanQueryRewrite

    public abstract class TopTermsRewrite<Q extends Query>

extends MultiTermQuery.RewriteMethod

Base rewrite method for collecting only the top terms via a priority queue.

See Also:
  Serialized Form
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.

Nested Class Summary
`protected static interface` `TermCollectingRewrite.TermCollector`

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

Method Summary
`protected abstract void` `addClause(Q topLevel, Term term, float boost)` Add a MultiTermQuery term to the top-level query
`protected void` `collectTerms(IndexReader reader, MultiTermQuery query, TermCollectingRewrite.TermCollector collector)`
`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 Q` `getTopLevelQuery()` Return a suitable top-level Query for holding all expanded terms.
`int` `hashCode()`
`Q` `rewrite(IndexReader reader, 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 Detail

### TopTermsRewrite

    public TopTermsRewrite(int size)

  Create a TopTermsBooleanQueryRewrite for at most `size` terms.

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

Method Detail

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

### getTopLevelQuery

    protected abstract Q getTopLevelQuery()
                                                 throws IOException

  Return a suitable top-level Query for holding all expanded terms.

  Throws:
    `IOException`

### addClause

    protected abstract void addClause(Q topLevel,
                                      Term term,
                                      float boost)
                               throws IOException

  Add a MultiTermQuery term to the top-level query

  Throws:
    `IOException`

### collectTerms

    protected final void collectTerms(IndexReader reader,
                                      MultiTermQuery query,
                                      TermCollectingRewrite.TermCollector collector)
                               throws IOException

  Throws:
    `IOException`