查詢相關性,文檔對查詢的得分是如何計算出來的,什麼是文檔得分?它是一個刻畫文檔與查詢匹配程度的參數,lucene的默認評分機制:TF/IDF(詞頻/逆文檔頻率)算法
1.1 何時文檔被匹配上(文檔得分的因子)
- 文檔權重(document boost):索引期賦予某個文檔的權重值
- 字段權重(field boost):查詢期賦予某個字段的權重值
- 協調因子(coord):基於文檔中詞項命中個數的協調因子,一個文檔命中了查詢中詞項越多,得分越高
- 逆文檔頻率(inverse document frequency):一個基於詞項的因子,用來告訴評分公式該詞項有多麼罕見,逆文檔頻率越低,詞項越罕見,評分公式利用該因子爲包含罕見詞頻的文檔加權
- 長度範數(length norm):每個字段的基於詞項個數的歸一化因子(在索引期計算出來並存儲在索引中),一個字段包含的詞項數越多,該因子的權重越低,這是意味着lucene評分公式更喜歡包含更少詞項的字段
- 詞頻(term frequency):一個基於詞項的因子,用來表示一個詞項在某個文檔中出現了多少次,詞頻越高 文檔的得分越高
- 查詢範數(query norm):一個基於查詢的歸一化因子,它等於查詢中詞項的權重平分和,查詢範數使得不同的查詢的得分能相互比較,儘管這種比較通常是困難而且不可行的
1.2 TF/IDF 評分公式
公式不好書寫就不寫了
得分的基本規則:
- 越多罕見的詞項被匹配上,文檔的得分越高
- 文檔字段越短(包含更少的詞項),文檔得分越高
- 權重越高(不論是索引期還是查詢器賦予的權重值),文檔得分越高
1.3 es 是如何評分的
es使用了lucene的評分功能,但是我們可以替換默認的評分算法,用戶也可以使用各種不同的查詢類型以精確的控制文檔評分的計算
包括(custom_boost_factor查詢 constant_score查詢 custom_score查詢等),還可以通過腳本來改變文檔的得分,還可以使用二次得分
功能