此内容没有您所选择的语言版本。
8.4. Customizing Lucene's scoring formula
Lucene allows the user to customize its scoring formula by extending
org.apache.lucene.search.Similarity
. The abstract methods defined in this class match the factors of the follownig formula calculating the score of query q for document d:
score(q,d) = coord(q,d) · queryNorm(q) · ∑t in q ( tf(t in d) · idf(t)2 · t.getBoost() · norm(t,d) )
Factor | Description |
---|---|
tf(t ind) | Term frequency factor for the term (t) in the document (d). |
idf(t) | Inverse document frequency of the term. |
coord(q,d) | Score factor based on how many of the query terms are found in the specified document. |
queryNorm(q) | Normalizing factor used to make scores between queries comparable. |
t.getBoost() | Field boost. |
norm(t,d) | Encapsulates a few (indexing time) boost and length factors. |
Similarity
's Javadocs for more information.
Hibernate Search provides two ways to modify Lucene's similarity calculation. First you can set the default similarity by specifying the fully specified classname of your
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
As an exmaple, let's assume it is not important how often a term appears in a document. Documents with a single occurrence of the term should be scored the same as documents with multiple occurrences. In this case your custom implementation of the method
Similarity
implementation using the property hibernate.search.similarity
. The default value is org.apache.lucene.search.DefaultSimilarity
. Additionally you can override the default similarity on class level using the @Similarity
annotation.
tf(float freq)
should return 1.0.