public class BM25Similarity extends Similarity
Similarity.ExactSimScorer, Similarity.SimWeight, Similarity.SloppySimScorer| Modifier and Type | Field and Description |
|---|---|
protected boolean |
discountOverlaps |
| Constructor and Description |
|---|
BM25Similarity()
BM25 with these default values:
k1 = 1.2,
b = 0.75.
|
BM25Similarity(float k1,
float b) |
| Modifier and Type | Method and Description |
|---|---|
protected float |
avgFieldLength(CollectionStatistics collectionStats)
The default implementation computes the average as
sumTotalTermFreq / maxDoc,
or returns 1 if the index does not store sumTotalTermFreq (Lucene 3.x indexes
or any field that omits frequency information). |
void |
computeNorm(FieldInvertState state,
Norm norm)
Computes the normalization value for a field, given the accumulated
state of term processing for this field (see
FieldInvertState). |
Similarity.SimWeight |
computeWeight(float queryBoost,
CollectionStatistics collectionStats,
TermStatistics... termStats)
Compute any collection-level weight (e.g.
|
protected float |
decodeNormValue(byte b)
|
protected byte |
encodeNormValue(float boost,
int fieldLength)
The default implementation encodes
boost / sqrt(length)
with SmallFloat.floatToByte315(float). |
Similarity.ExactSimScorer |
exactSimScorer(Similarity.SimWeight stats,
AtomicReaderContext context)
Creates a new
Similarity.ExactSimScorer to score matching documents from a segment of the inverted index. |
float |
getB() |
boolean |
getDiscountOverlaps() |
float |
getK1() |
protected float |
idf(long docFreq,
long numDocs)
Implemented as
log(1 + (numDocs - docFreq + 0.5)/(docFreq + 0.5)). |
Explanation |
idfExplain(CollectionStatistics collectionStats,
TermStatistics termStats) |
Explanation |
idfExplain(CollectionStatistics collectionStats,
TermStatistics[] termStats) |
protected float |
scorePayload(int doc,
int start,
int end,
BytesRef payload)
The default implementation returns
1 |
void |
setDiscountOverlaps(boolean v)
Determines whether overlap tokens (Tokens with 0 position increment) are
ignored when computing norm.
|
protected float |
sloppyFreq(int distance)
Implemented as
1 / (distance + 1). |
Similarity.SloppySimScorer |
sloppySimScorer(Similarity.SimWeight stats,
AtomicReaderContext context)
Creates a new
Similarity.SloppySimScorer to score matching documents from a segment of the inverted index. |
String |
toString() |
coord, queryNormpublic BM25Similarity(float k1,
float b)
public BM25Similarity()
k1 = 1.2,
b = 0.75.protected float idf(long docFreq,
long numDocs)
log(1 + (numDocs - docFreq + 0.5)/(docFreq + 0.5)).protected float sloppyFreq(int distance)
1 / (distance + 1).protected float scorePayload(int doc,
int start,
int end,
BytesRef payload)
1protected float avgFieldLength(CollectionStatistics collectionStats)
sumTotalTermFreq / maxDoc,
or returns 1 if the index does not store sumTotalTermFreq (Lucene 3.x indexes
or any field that omits frequency information).protected byte encodeNormValue(float boost,
int fieldLength)
boost / sqrt(length)
with SmallFloat.floatToByte315(float). This is compatible with
Lucene's default implementation. If you change this, then you should
change decodeNormValue(byte) to match.protected float decodeNormValue(byte b)
public void setDiscountOverlaps(boolean v)
public boolean getDiscountOverlaps()
setDiscountOverlaps(boolean)public final void computeNorm(FieldInvertState state, Norm norm)
SimilarityFieldInvertState).
Implementations should calculate a norm value based on the field
state and set that value to the given Norm.
Matches in longer fields are less precise, so implementations of this
method usually set smaller values when state.getLength() is large,
and larger values when state.getLength() is small.
computeNorm in class Similaritystate - current processing state for this fieldnorm - holds the computed norm value when this method returnspublic Explanation idfExplain(CollectionStatistics collectionStats, TermStatistics termStats)
public Explanation idfExplain(CollectionStatistics collectionStats, TermStatistics[] termStats)
public final Similarity.SimWeight computeWeight(float queryBoost, CollectionStatistics collectionStats, TermStatistics... termStats)
SimilaritycomputeWeight in class SimilarityqueryBoost - 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.public final Similarity.ExactSimScorer exactSimScorer(Similarity.SimWeight stats, AtomicReaderContext context) throws IOException
SimilaritySimilarity.ExactSimScorer to score matching documents from a segment of the inverted index.exactSimScorer in class Similaritystats - collection information from Similarity.computeWeight(float, CollectionStatistics, TermStatistics...)context - segment of the inverted index to be scored.contextIOExceptionpublic final Similarity.SloppySimScorer sloppySimScorer(Similarity.SimWeight stats, AtomicReaderContext context) throws IOException
SimilaritySimilarity.SloppySimScorer to score matching documents from a segment of the inverted index.sloppySimScorer in class Similaritystats - collection information from Similarity.computeWeight(float, CollectionStatistics, TermStatistics...)context - segment of the inverted index to be scored.contextIOExceptionpublic float getK1()
public float getB()
Copyright © 2000-2012 Apache Software Foundation. All Rights Reserved.