public final class BlendedTermQuery extends Query
Query that blends index statistics across multiple terms.
This is particularly useful when several terms should produce identical
scores, regardless of their index statistics.
For instance imagine that you are resolving synonyms at search time, all terms should produce identical scores instead of the default behavior, which tends to give higher scores to rare terms.
An other useful use-case is cross-field search: imagine that you would
like to search for john on two fields: first_name and
last_name. You might not want to give a higher weight to matches
on the field where john is rarer, in which case
BlendedTermQuery would help as well.
| Modifier and Type | Class and Description |
|---|---|
static class |
BlendedTermQuery.Builder
A Builder for
BlendedTermQuery. |
static class |
BlendedTermQuery.DisjunctionMaxRewrite
A
BlendedTermQuery.RewriteMethod that creates a DisjunctionMaxQuery out
of the sub queries. |
static class |
BlendedTermQuery.RewriteMethod
A
BlendedTermQuery.RewriteMethod defines how queries for individual terms should
be merged. |
| Modifier and Type | Field and Description |
|---|---|
static BlendedTermQuery.RewriteMethod |
BOOLEAN_REWRITE
A
BlendedTermQuery.RewriteMethod that adds all sub queries to a BooleanQuery. |
private float[] |
boosts |
private TermStates[] |
contexts |
static BlendedTermQuery.RewriteMethod |
DISJUNCTION_MAX_REWRITE
BlendedTermQuery.DisjunctionMaxRewrite instance with a tie-breaker of 0.01. |
private BlendedTermQuery.RewriteMethod |
rewriteMethod |
private Term[] |
terms |
| Modifier | Constructor and Description |
|---|---|
private |
BlendedTermQuery(Term[] terms,
float[] boosts,
TermStates[] contexts,
BlendedTermQuery.RewriteMethod rewriteMethod) |
| Modifier and Type | Method and Description |
|---|---|
private static TermStates |
adjustFrequencies(IndexReaderContext readerContext,
TermStates ctx,
int artificialDf,
long artificialTtf) |
boolean |
equals(java.lang.Object other)
Override and implement query instance equivalence properly in a subclass.
|
private boolean |
equalsTo(BlendedTermQuery other) |
int |
hashCode()
Override and implement query hash code properly in a subclass.
|
Query |
rewrite(IndexReader reader)
Expert: called to re-write queries into primitive queries.
|
java.lang.String |
toString(java.lang.String field)
Prints a query to a string, with
field assumed to be the
default field and omitted. |
void |
visit(QueryVisitor visitor)
Recurse through the query tree, visiting any child queries
|
classHash, createWeight, sameClassAs, toStringpublic static final BlendedTermQuery.RewriteMethod BOOLEAN_REWRITE
BlendedTermQuery.RewriteMethod that adds all sub queries to a BooleanQuery.
This BlendedTermQuery.RewriteMethod is useful when matching on several fields is
considered better than having a good match on a single field.public static final BlendedTermQuery.RewriteMethod DISJUNCTION_MAX_REWRITE
BlendedTermQuery.DisjunctionMaxRewrite instance with a tie-breaker of 0.01.private final Term[] terms
private final float[] boosts
private final TermStates[] contexts
private final BlendedTermQuery.RewriteMethod rewriteMethod
private BlendedTermQuery(Term[] terms, float[] boosts, TermStates[] contexts, BlendedTermQuery.RewriteMethod rewriteMethod)
public boolean equals(java.lang.Object other)
QueryQueryCache works properly.
Typically a query will be equal to another only if it's an instance of
the same class and its document-filtering properties are identical that other
instance. Utility methods are provided for certain repetitive code.equals in class QueryQuery.sameClassAs(Object),
Query.classHash()private boolean equalsTo(BlendedTermQuery other)
public int hashCode()
QueryQueryCache works properly.hashCode in class QueryQuery.equals(Object)public java.lang.String toString(java.lang.String field)
Queryfield assumed to be the
default field and omitted.public final Query rewrite(IndexReader reader) throws java.io.IOException
Querypublic void visit(QueryVisitor visitor)
Queryprivate static TermStates adjustFrequencies(IndexReaderContext readerContext, TermStates ctx, int artificialDf, long artificialTtf) throws java.io.IOException
java.io.IOException