本節書摘來華章計算機《深入了解elasticsearch(原書第2版)》一書中的第2章 ,第2.1.2節,[美]拉斐爾·酷奇(rafal ku) 馬雷克·羅戈任斯基(marek rogoziski)著 張世武 餘洪淼 商旦 譯 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。
從lucene 4.0版本起,lucene引入了多種不同的打分公式,這一點或許你已經有所了解了。不過,我們還是希望在此探索一下預設的tf/idf打分公式的一些細節。請記住,為了調節查詢相關性,你并不需要深入了解這個公式的來龍去脈,但是了解它的工作原理卻非常重要,因為這有助于簡化相關度調優過程。
lucene的理論評分公式
tf/idf公式的理論形式如下:

上面的公式融合了布爾檢索模型和向量空間檢索模型。我們不打算在此讨論理論評分公式,而是直接跳到實踐中使用的評分公式,看看lucene内部是如何實作和使用評分公式的。
lucene的實際評分公式
現在讓我們看看lucene實際使用的評分公式:
也許你已經看到了,評分公式是一個關于查詢q和文檔d的函數,正如我們之前提到的一樣。有兩個因子并不直接依賴查詢詞項,它們是coord和querynorm,這兩個因子與查詢詞項的一個求和公式相乘。
求和公式中每個加數由以下因子連乘所得:詞頻,逆文檔頻率,詞項權重,範數。範數就是之前我們提到過的長度範數。
這個公式聽起來很複雜。請别擔心,你并不用記住所有的細節,你隻需要意識到哪些因素是與評分有關的即可。從前面的公式我們可以導出一些基本的規則:
越罕見的詞項被比對上,文檔得分越高。lucene認為包含獨特單詞的文檔比包含常見單詞的文檔更重要。
文檔字段越短(包含更少的詞項),文檔得分越高。通常,lucene更加重視較短的文檔,因為這些短文檔更有可能和我們查詢的主題高度吻合。
權重越高(不論是索引期或是查詢期賦予的權重值),文檔得分越高。因為更高的權重意味着特定資料(文檔、詞項、短語等)具有更高的重要性。
正如你所見,lucene将最高得分賦予同時滿足以下條件的文檔:包含多個罕見查詢詞項,詞項所在字段較短(該字段索引了較少的詞項)。該公式更“喜歡”包含罕見詞項的文檔。