org.apache.lucene.search
Class MultiTermQuery.TopTermsBoostOnlyBooleanQueryRewrite

java.lang.Object
  extended by org.apache.lucene.search.MultiTermQuery.RewriteMethod
      extended by org.apache.lucene.search.TopTermsRewrite<BooleanQuery>
          extended by org.apache.lucene.search.MultiTermQuery.TopTermsBoostOnlyBooleanQueryRewrite
All Implemented Interfaces:
Serializable
Enclosing class:
MultiTermQuery

public static final class MultiTermQuery.TopTermsBoostOnlyBooleanQueryRewrite
extends TopTermsRewrite<BooleanQuery>

A rewrite method that first translates each term into BooleanClause.Occur.SHOULD clause in a BooleanQuery, but the scores are only computed as the boost.

This rewrite method only uses the top scoring terms so it will not overflow the boolean max clause count.

See Also:
MultiTermQuery.setRewriteMethod(org.apache.lucene.search.MultiTermQuery.RewriteMethod), Serialized Form

Nested Class Summary
protected static interface TermCollectingRewrite.TermCollector
           
 
Constructor Summary
MultiTermQuery.TopTermsBoostOnlyBooleanQueryRewrite(int size)
          Create a TopTermsBoostOnlyBooleanQueryRewrite for at most size terms.
 
Method Summary
protected  void addClause(BooleanQuery topLevel, Term term, float boost)
          Add a MultiTermQuery term to the top-level query
protected  void collectTerms(IndexReader reader, MultiTermQuery query, TermCollectingRewrite.TermCollector collector)
           
protected  int getMaxSize()
          return the maximum size of the priority queue (for boolean rewrites this is BooleanQuery#getMaxClauseCount).
protected  BooleanQuery getTopLevelQuery()
          Return a suitable top-level Query for holding all expanded terms.
 
Methods inherited from class org.apache.lucene.search.TopTermsRewrite
equals, getSize, hashCode, rewrite
 
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

MultiTermQuery.TopTermsBoostOnlyBooleanQueryRewrite

public MultiTermQuery.TopTermsBoostOnlyBooleanQueryRewrite(int size)
Create a TopTermsBoostOnlyBooleanQueryRewrite for at most size terms.

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

Method Detail

getMaxSize

protected int getMaxSize()
Description copied from class: TopTermsRewrite
return the maximum size of the priority queue (for boolean rewrites this is BooleanQuery#getMaxClauseCount).

Specified by:
getMaxSize in class TopTermsRewrite<BooleanQuery>

getTopLevelQuery

protected BooleanQuery getTopLevelQuery()
Return a suitable top-level Query for holding all expanded terms.


addClause

protected void addClause(BooleanQuery topLevel,
                         Term term,
                         float boost)
Add a MultiTermQuery term to the top-level query


collectTerms

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