《深入理解Elasticsearch(原書第2版)》一2.1.1 何時文檔被匹配上
本節書摘來華章計算機《深入理解Elasticsearch(原書第2版)》一書中的第2章 ,第2.1。1節,[美]拉斐爾·酷奇(Rafal Ku) 馬雷克·羅戈任斯基(Marek Rogoziski)著 張世武 餘洪淼 商旦 譯 更多章節內容可以訪問雲棲社區“華章計算機”公眾號查看。
2.1.1 何時文檔被匹配上
一個文檔被Lucene返回,意味著該文檔與用戶提交的查詢是匹配的。在這種情況下,每個被返回文檔會有一個得分。在某些場景下,所有文檔的得分都一樣(比如使用constant_score查詢),不過一般情況下,各個文檔的得分是不一樣的。得分越高,文檔更相關,至少從Apache Lucene及其評分公式的角度來看是這樣的。得分還取決於匹配的文檔、查詢和索引內容,因此,很顯然同一個文檔對不同查詢的得分是不同的。讀者需要注意,同一文檔在不同查詢中的得分不具備可比較性,不同查詢返回文檔中的最高得分也不具備可比較性。這是因為文檔得分依賴多個因子,除了權重和查詢本身的結構,還依賴被匹配的詞項數目、詞項所在字段,以及用於查詢規範化的匹配類型,如此等等。在一些比較極端的情況下,同一個文檔在相似查詢中的得分非常懸殊,僅僅是因為使用了自定義得分查詢或者命中詞項數的急劇變化。
現在,讓我們再回到評分過程。為了計算文檔得分,我們需要考慮以下這些因子。
- 文檔權重(document boost):索引期賦予某個文檔的權重值。
- 字段權重(field boost):查詢期賦予某個字段的權重值。
- 協調因子(coord):基於文檔中詞項個數的協調因子,一個文檔命中了查詢中的詞項越多,得分越高。
- 逆文檔頻率(inverse document frequency):一個基於詞項的因子,用來告訴評分公式該詞項有多麼罕見。逆文檔頻率越高,詞項就越罕見。評分公式利用該因子,為包含罕見詞項的文檔加權。
- 長度範數(Length norm):每字段的基於詞項個數的歸一化因子(在索引期被計算並存儲在索引中)。一個字段包含的詞項數越多,該因子的權重越低,這意味著Apache Lucene評分公式更“喜歡”包含更少詞項的字段。
- 詞頻(Term frequency):一個基於詞項的因子,用來表示一個詞項在某個文檔中出現了多少次。詞頻越高,文檔得分越高。
- 查詢範數(Query norm):一個基於查詢的歸一化因子,它等於查詢中詞項的權重平方和。查詢範數使不同查詢的得分能互相比較,盡管這種比較通常是困難和不可行的。
最後更新:2017-06-23 23:34:43