Package org.apache.lucene.search
Class ScoringRewrite<B>
- java.lang.Object
-
- org.apache.lucene.search.MultiTermQuery.RewriteMethod
-
- org.apache.lucene.search.ScoringRewrite<B>
-
public abstract class ScoringRewrite<B> extends MultiTermQuery.RewriteMethod
Base rewrite method that translates each term into a query, and keeps the scores as computed by the query.- 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.
-
-
Field Summary
Fields Modifier and Type Field Description static MultiTermQuery.RewriteMethod
CONSTANT_SCORE_BOOLEAN_REWRITE
LikeSCORING_BOOLEAN_REWRITE
except scores are not computed.static ScoringRewrite<BooleanQuery.Builder>
SCORING_BOOLEAN_REWRITE
A rewrite method that first translates each term intoBooleanClause.Occur.SHOULD
clause in a BooleanQuery, and keeps the scores as computed by the query.
-
Constructor Summary
Constructors Constructor Description ScoringRewrite()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected 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.protected abstract void
checkMaxClauseCount(int count)
This method is called after every new term to check if the number of max clauses (e.g.protected abstract B
getTopLevelBuilder()
Return a suitable builder for the top-level Query for holding all expanded terms.Query
rewrite(IndexReader reader, MultiTermQuery query)
-
Methods inherited from class org.apache.lucene.search.MultiTermQuery.RewriteMethod
getTermsEnum
-
-
-
-
Field Detail
-
SCORING_BOOLEAN_REWRITE
public static final ScoringRewrite<BooleanQuery.Builder> SCORING_BOOLEAN_REWRITE
A rewrite method that first translates each term intoBooleanClause.Occur.SHOULD
clause in a BooleanQuery, and keeps the scores as computed by the query. Note that typically such scores are meaningless to the user, and require non-trivial CPU to compute, so it's almost always better to useMultiTermQuery.CONSTANT_SCORE_BLENDED_REWRITE
orMultiTermQuery.CONSTANT_SCORE_REWRITE
instead.NOTE: This rewrite method will hit
IndexSearcher.TooManyClauses
if the number of terms exceedsIndexSearcher.getMaxClauseCount()
.
-
CONSTANT_SCORE_BOOLEAN_REWRITE
public static final MultiTermQuery.RewriteMethod CONSTANT_SCORE_BOOLEAN_REWRITE
LikeSCORING_BOOLEAN_REWRITE
except scores are not computed. Instead, each matching document receives a constant score equal to the query's boost.NOTE: This rewrite method will hit
IndexSearcher.TooManyClauses
if the number of terms exceedsIndexSearcher.getMaxClauseCount()
.
-
-
Method Detail
-
checkMaxClauseCount
protected abstract void checkMaxClauseCount(int count) throws IOException
This method is called after every new term to check if the number of max clauses (e.g. in BooleanQuery) is not exceeded. Throws the correspondingRuntimeException
.- Throws:
IOException
-
rewrite
public final Query rewrite(IndexReader reader, MultiTermQuery query) throws IOException
- Specified by:
rewrite
in classMultiTermQuery.RewriteMethod
- Throws:
IOException
-
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
-
-