public abstract class ScoringRewrite<B> extends MultiTermQuery.RewriteMethod
Modifier and Type | Field and Description |
---|---|
static MultiTermQuery.RewriteMethod |
CONSTANT_SCORE_BOOLEAN_REWRITE
Like
SCORING_BOOLEAN_REWRITE except
scores are not computed. |
static ScoringRewrite<BooleanQuery.Builder> |
SCORING_BOOLEAN_REWRITE
A rewrite method that first translates each term into
BooleanClause.Occur.SHOULD clause in a
BooleanQuery, and keeps the scores as computed by the
query. |
Constructor and Description |
---|
ScoringRewrite() |
Modifier and Type | Method and 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) |
getTermsEnum
public static final ScoringRewrite<BooleanQuery.Builder> SCORING_BOOLEAN_REWRITE
BooleanClause.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 use MultiTermQuery.CONSTANT_SCORE_REWRITE
instead.
NOTE: This rewrite method will hit BooleanQuery.TooManyClauses
if the number of terms
exceeds BooleanQuery.getMaxClauseCount()
.
public static final MultiTermQuery.RewriteMethod CONSTANT_SCORE_BOOLEAN_REWRITE
SCORING_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 BooleanQuery.TooManyClauses
if the number of terms
exceeds BooleanQuery.getMaxClauseCount()
.
protected abstract void checkMaxClauseCount(int count) throws IOException
RuntimeException
.IOException
public final Query rewrite(IndexReader reader, MultiTermQuery query) throws IOException
rewrite
in class MultiTermQuery.RewriteMethod
IOException
protected abstract B getTopLevelBuilder() throws IOException
IOException
protected abstract Query build(B builder)
protected final void addClause(B topLevel, Term term, int docCount, float boost) throws IOException
IOException
protected abstract void addClause(B topLevel, Term term, int docCount, float boost, TermStates states) throws IOException
IOException
Copyright © 2000-2021 Apache Software Foundation. All Rights Reserved.