Elasticsearch核心技術與實戰學習筆記 第四章 26 | 搜索的相關性算分

一 序

    本文屬於極客時間Elasticsearch核心技術與實戰學習筆記系列。

二 相關性和相關性算分

搜索的相關性算分,描述了一個文檔和查詢語句匹配的程度。ES 會對每個匹配查詢條件的結構進行算分_score
打分的本質是排序 , 需要把最符合用戶需求的文檔排在前面。ES 5 之前,默認的相關性打分採用 TF-IDF,現在採用 BM25     

2.1 詞頻  TF

Term Frequency :檢查詞在一篇文檔裏出現的頻率

  • 檢查詞出現的次數除以文檔的總字數

度量一條查詢和結果文檔縣管轄的建檔方法:簡單講搜索每一個詞的 TF 進行相加

  • TF(區塊鏈) + TF(的)+ TF(應用)

Stop Word

  • “的” 在文檔中出現了很多次,但是對貢獻相關度幾乎沒有用處,不應該考慮他們的 TF

2.2 逆文檔頻率 IDF

  DF:檢索詞在所有文檔中出現的頻率

  • “區塊鏈” 在相對比較少的文檔中出現
  • “應用” 在相對比較多的文檔中出現
  • “Stop Word” 在大量的文檔中出現

Inverse Document Frequency :簡單說 = log(全部文檔書 / 檢索詞出現過的文檔總數)
TF-IDF 本質上就是將 TF 求和變成了加權求和

  • TF(區塊鏈)* IDF(區塊鏈) + TF(的)* IDF(的)+ TF(應用)* IDF(應用)

Lucene 中的 TF-IDF 評分公式

  

大致的瞭解,知道boosting對於算分的影響。

BM25

定製 Similarity

通過 Explain API 查看 TF-IDF

demo

數據準備,插入4條數據

PUT testscore/_bulk
{ "index": { "_id": 1 }}
{ "content":"we use Elasticsearch to power the search" }
{ "index": { "_id": 2 }}
{ "content":"we like elasticsearch" }
{ "index": { "_id": 3 }}
{ "content":"The scoring of documents is caculated by the scoring formula" }
{ "index": { "_id": 4 }}
{ "content":"you know, for search" }

查到2條,爲什麼2在1之前呢?

這兩個文檔的TF是一樣的,但是文檔2比文檔1短,影響算分高。

打開explain:,可以看到相關算分的計算

Boosting Relevance

Boosting 是控制相關度的一種手段

  • 索引,字段或查詢子條件

參數 boost 的含義

  • 當 boost > 1 時,打分的相關度相對性提高
  • 當 0 < boost < 1 時,打分的權重相對性降低
  • 當 boost < 0 時,貢獻度負分

小結:

總體來說,屬於瞭解原理性質。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章