lucene打分機制

2021-08-27 22:21:26 字數 1972 閱讀 6244

lucene採用的是基於vsm(向量空間模型)的相似度演算法,

查詢向量(query vector)與搜尋出來的文件向量(document vector) 形成n個夾角,計算q 和d 之間的夾角,最小的 就是相 似

度最高的。

看下lucene的打分公式:

tf: 乙個term在乙個文件中出現的次數

idf:乙個term在多少個文件中出現過

t.getboost:lucene自有的權重配置,預設為1

norm:字段標準化。

在lucene中score簡單說是由 tf * idf * boost * norm 計算得出的。

**實現,必要時可以重寫**。在lucene的defaultsimilarity類

1:協調coord(q,d)

@override

public float coord(int overlap, int maxoverlap)

2:querynorm(q)查詢規範 (對排序沒有任何影響)

/** implemented as1/sqrt(sumofsquaredweights). */

@override

public float querynorm(float sumofsquaredweights)

3:tf 單個文件詞頻函式圖:

只在商品名稱中出現了1次。。他的tf =1

math.sqrt 取平方根 math.sqrt(9)=3.0

如果搜尋「筆記本」 ,在分類和商品名稱中都出現了 他的tf 就是1.414 (2次的平方根)

只在商品名稱中出現了1次。。他的tf =1

@override

public float tf(float freq)

4:idf(t) 乙個term在多少個文件中出現過

numdocs 總文件數 docfreq 在多少文件中出現過

如果搜尋「筆記本」 ,總文件有1000個 ,,出現100次。。那麼idf=2

如果出現10次 那麼其idf =3

idf 越高、在總文件數中 該詞出現的頻率越低

5:t.getboost() 權重

6:norm(t,d) 標準化

對term和文件的字段長度進行標準化計算 ,如果欄位的長度越長,那麼該值越低。

@override

public float lengthnorm(fieldinvertstate state)

電商體驗:

在電商搜尋中。一般基於vsm演算法推導出來的lucene演算法的tfidf會被忽視,應為這兩個值沒有用的。真正用到的是boost演算法和norm演算法。。主要作用還是boost演算法。還有

solr的乙個bf引數。。乙個函式計算值

Lucene評分機制

tfidfsimilarity類中定義了lucene評分的要素。重寫這些要素計算實現可以方便的修改lucene的打分機制。擴充套件閱讀 introduction to information retrieval,chapter 6 下面將從資訊檢索模型到具體 有效地 實現來描述lucene如何實現評...

Lucene(三)評分機制

每當搜尋到匹配文件時,該文件都會被賦予一定的分值,用以反映匹配程度。該分值會計算文件與查詢之間的相似程度嗎,更高的分值反映了更強的相似程度和匹配程度。評分因子 描述tf t in d 項頻率因子 文件 d 中出現項 t 的頻率 idf t 項在倒排檔案中出現的頻率 它被用來衡量項的 唯一 性。出現頻...

lucene 的評分機制

elasticsearch是基於lucene的,所以他的評分機制也是基於lucene的。評分就是我們搜尋的短語和索引中每篇文件的相關度打分。如果沒有干預評分演算法的時候,每次查詢,lucene會基於乙個評分演算法來計算所有文件和搜尋語句的相關評分。使用lucene的評分機制基本能夠把最符合使用者需要...