Class TopTermsRewrite<Q extends Query>

java.lang.Object
org.apache.lucene.search.MultiTermQuery.RewriteMethod
org.apache.lucene.search.TopTermsRewrite<Q>
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.
  • Constructor Details

    • 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 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 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 final void addClause(Q topLevel, Term term, int docCount, float boost) throws IOException
      Add a MultiTermQuery term to the top-level query
      Throws:
      IOException
    • addClause

      protected abstract void addClause(Q topLevel, Term term, int docCount, float boost, TermContext states) throws IOException
      Throws:
      IOException