Lucene在進行關鍵詞查詢的時候,默認用TF-IDF算法來計算關鍵詞和文檔的相關性,用這個數據排序
TF:詞頻,IDF:逆向文檔頻率,TF-IDF是一種統計方法,或者被稱為向量空間模型,名字聽起來很復雜,但是它其實只包含了兩個簡單規則
所以一個term的TF-IDF相關性等于 TF * IDF
這兩個規則非常簡單,這就是TF-IDF的核心規則,第二個的規則其實有缺陷的,他單純地認為文本頻率小的單詞就越重要,文本頻率大的單詞就越無用,顯然這并不是完全正確的。并不能有效地反映單詞的重要程度和特征詞的分布情況,比如說搜索web文檔的時候,處于HTML不同結構的特征詞中對文章內容的反映程度不同,應該有不同的權重
TF-IDF的優點是算法簡單,運算速度很快
Lucene為了提高可編程行,在上述規則做了一些擴充,就是加入一些編程接口,對不同的查詢做了權重歸一化處理,但是核心公式還是TF * IDF
Lucene算法公式如下
score(q,d) = coord(q,d) · queryNorm(q) · ∑ ( tf(t in d) · idf(t)2 · t.getBoost() · norm(t,d) )
各種編程插口顯得很麻煩,可以不使用,所以我們可以把Lucence的算分公式進行簡化
結論score(q,d) = coord(q,d) · ∑ ( tf(t in d) · idf(t)2 )
某個詞或短語在一篇文章中出現的次數越多,越相關一定要去除掉stop Word,因為這些詞出現的頻率太高了,也就是TF的值很大,會嚴重干擾算分結果本文地址:http://lutaf.com/210.htm魯塔弗原創文章,歡迎轉載,請附帶原文鏈接
新聞熱點
疑難解答