public final class BM25FQuery extends Query
Query
that treats multiple fields as a single stream and scores
terms as if you had indexed them as a single term in a single field.
For scoring purposes this query implements the BM25F's simple formula
described in:
http://www.staff.city.ac.uk/~sb317/papers/foundations_bm25_review.pdf
The per-field similarity is ignored but to be compatible each field must use
a Similarity
at index time that encodes norms the same way as
SimilarityBase.computeNorm(org.apache.lucene.index.FieldInvertState)
.Modifier and Type | Class and Description |
---|---|
private static class |
BM25FQuery.BM25FScorer |
(package private) class |
BM25FQuery.BM25FWeight |
static class |
BM25FQuery.Builder
A builder for
BM25FQuery . |
(package private) static class |
BM25FQuery.FieldAndWeight |
private static class |
BM25FQuery.WeightedDisiWrapper |
Modifier and Type | Field and Description |
---|---|
private java.util.TreeMap<java.lang.String,BM25FQuery.FieldAndWeight> |
fieldAndWeights |
private Term[] |
fieldTerms |
private BM25Similarity |
similarity |
private BytesRef[] |
terms |
Modifier | Constructor and Description |
---|---|
private |
BM25FQuery(BM25Similarity similarity,
java.util.TreeMap<java.lang.String,BM25FQuery.FieldAndWeight> fieldAndWeights,
BytesRef[] terms) |
Modifier and Type | Method and Description |
---|---|
Weight |
createWeight(IndexSearcher searcher,
ScoreMode scoreMode,
float boost)
Expert: Constructs an appropriate Weight implementation for this query.
|
boolean |
equals(java.lang.Object other)
Override and implement query instance equivalence properly in a subclass.
|
java.util.List<Term> |
getTerms() |
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.
|
private BooleanQuery |
rewriteToBoolean() |
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, sameClassAs, toString
private final BM25Similarity similarity
private final java.util.TreeMap<java.lang.String,BM25FQuery.FieldAndWeight> fieldAndWeights
private final BytesRef[] terms
private final Term[] fieldTerms
private BM25FQuery(BM25Similarity similarity, java.util.TreeMap<java.lang.String,BM25FQuery.FieldAndWeight> fieldAndWeights, BytesRef[] terms)
public java.util.List<Term> getTerms()
public java.lang.String toString(java.lang.String field)
Query
field
assumed to be the
default field and omitted.public int hashCode()
Query
QueryCache
works properly.hashCode
in class Query
Query.equals(Object)
public boolean equals(java.lang.Object other)
Query
QueryCache
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 Query
Query.sameClassAs(Object)
,
Query.classHash()
public Query rewrite(IndexReader reader) throws java.io.IOException
Query
public void visit(QueryVisitor visitor)
Query
private BooleanQuery rewriteToBoolean()
public Weight createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost) throws java.io.IOException
Query
Only implemented by primitive queries, which re-write to themselves.
createWeight
in class Query
scoreMode
- How the produced scorers will be consumed.boost
- The boost that is propagated by the parent queries.java.io.IOException