Class BM25Similarity
- java.lang.Object
-
- org.apache.lucene.search.similarities.Similarity
-
- org.apache.lucene.search.similarities.BM25Similarity
-
public class BM25Similarity extends Similarity
BM25 Similarity. Introduced in Stephen E. Robertson, Steve Walker, Susan Jones, Micheline Hancock-Beaulieu, and Mike Gatford. Okapi at TREC-3. In Proceedings of the Third Text REtrieval Conference (TREC 1994). Gaithersburg, USA, November 1994.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.lucene.search.similarities.Similarity
Similarity.SimScorer, Similarity.SimWeight
-
-
Constructor Summary
Constructors Constructor Description BM25Similarity()BM25 with these default values:k1 = 1.2,b = 0.75.BM25Similarity(float k1, float b)BM25 with the supplied parameter values.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description longcomputeNorm(FieldInvertState state)Computes the normalization value for a field, given the accumulated state of term processing for this field (seeFieldInvertState).Similarity.SimWeightcomputeWeight(float queryBoost, CollectionStatistics collectionStats, TermStatistics... termStats)Compute any collection-level weight (e.g.floatgetB()Returns thebparameterbooleangetDiscountOverlaps()Returns true if overlap tokens are discounted from the document's length.floatgetK1()Returns thek1parameterExplanationidfExplain(CollectionStatistics collectionStats, TermStatistics termStats)Computes a score factor for a simple term and returns an explanation for that score factor.ExplanationidfExplain(CollectionStatistics collectionStats, TermStatistics[] termStats)Computes a score factor for a phrase.voidsetDiscountOverlaps(boolean v)Sets whether overlap tokens (Tokens with 0 position increment) are ignored when computing norm.Similarity.SimScorersimScorer(Similarity.SimWeight stats, AtomicReaderContext context)Creates a newSimilarity.SimScorerto score matching documents from a segment of the inverted index.java.lang.StringtoString()-
Methods inherited from class org.apache.lucene.search.similarities.Similarity
coord, queryNorm
-
-
-
-
Constructor Detail
-
BM25Similarity
public BM25Similarity(float k1, float b)BM25 with the supplied parameter values.- Parameters:
k1- Controls non-linear term frequency normalization (saturation).b- Controls to what degree document length normalizes tf values.
-
BM25Similarity
public BM25Similarity()
BM25 with these default values:k1 = 1.2,b = 0.75.
-
-
Method Detail
-
setDiscountOverlaps
public void setDiscountOverlaps(boolean v)
Sets whether overlap tokens (Tokens with 0 position increment) are ignored when computing norm. By default this is true, meaning overlap tokens do not count when computing norms.
-
getDiscountOverlaps
public boolean getDiscountOverlaps()
Returns true if overlap tokens are discounted from the document's length.- See Also:
setDiscountOverlaps(boolean)
-
computeNorm
public final long computeNorm(FieldInvertState state)
Description copied from class:SimilarityComputes the normalization value for a field, given the accumulated state of term processing for this field (seeFieldInvertState).Matches in longer fields are less precise, so implementations of this method usually set smaller values when
state.getLength()is large, and larger values whenstate.getLength()is small.- Specified by:
computeNormin classSimilarity- Parameters:
state- current processing state for this field- Returns:
- computed norm value
-
idfExplain
public Explanation idfExplain(CollectionStatistics collectionStats, TermStatistics termStats)
Computes a score factor for a simple term and returns an explanation for that score factor.The default implementation uses:
idf(docFreq, searcher.maxDoc());
Note thatCollectionStatistics.maxDoc()is used instead ofIndexReader#numDocs()because alsoTermStatistics.docFreq()is used, and when the latter is inaccurate, so isCollectionStatistics.maxDoc(), and in the same direction. In addition,CollectionStatistics.maxDoc()is more efficient to compute- Parameters:
collectionStats- collection-level statisticstermStats- term-level statistics for the term- Returns:
- an Explain object that includes both an idf score factor and an explanation for the term.
-
idfExplain
public Explanation idfExplain(CollectionStatistics collectionStats, TermStatistics[] termStats)
Computes a score factor for a phrase.The default implementation sums the idf factor for each term in the phrase.
- Parameters:
collectionStats- collection-level statisticstermStats- term-level statistics for the terms in the phrase- Returns:
- an Explain object that includes both an idf score factor for the phrase and an explanation for each term.
-
computeWeight
public final Similarity.SimWeight computeWeight(float queryBoost, CollectionStatistics collectionStats, TermStatistics... termStats)
Description copied from class:SimilarityCompute any collection-level weight (e.g. IDF, average document length, etc) needed for scoring a query.- Specified by:
computeWeightin classSimilarity- Parameters:
queryBoost- the query-time boost.collectionStats- collection-level statistics, such as the number of tokens in the collection.termStats- term-level statistics, such as the document frequency of a term across the collection.- Returns:
- SimWeight object with the information this Similarity needs to score a query.
-
simScorer
public final Similarity.SimScorer simScorer(Similarity.SimWeight stats, AtomicReaderContext context) throws java.io.IOException
Description copied from class:SimilarityCreates a newSimilarity.SimScorerto score matching documents from a segment of the inverted index.- Specified by:
simScorerin classSimilarity- Parameters:
stats- collection information fromSimilarity.computeWeight(float, CollectionStatistics, TermStatistics...)context- segment of the inverted index to be scored.- Returns:
- SloppySimScorer for scoring documents across
context - Throws:
java.io.IOException- if there is a low-level I/O error
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
getK1
public float getK1()
Returns thek1parameter- See Also:
BM25Similarity(float, float)
-
getB
public float getB()
Returns thebparameter- See Also:
BM25Similarity(float, float)
-
-