相關度排序是查詢結果按照與查詢關鍵字的相關性進行排序,越相關的越靠前。比如搜尋「lucene
1.2相關度打分
lucene對查詢關鍵字和索引文件的相關度進行打分,得分高的就排在前邊。如何打分呢?
lucene
是在使用者進行檢索時實時根據搜尋的關鍵字計算出來的,分兩步:
1)計算出詞(term)的權重
2)根據詞的權重值,計算文件相關度得分。
什麼是詞的權重?
通過索引部分的學習,明確索引的最小單位是乙個term(索引詞典中的乙個詞
),搜尋也是要從term中搜尋,再根據
term
找到文件,term對文件的重要性稱為權重,影響term權重有兩個因素:
lterm frequency (tf):
指此term在此文件中出現了多少次。
tf越大說明越重要。
詞(term)在文件中出現的次數越多,說明此詞
(term)
對該文件越重要,如「
lucene
」這個詞,在文件中出現的次數很多,說明該文件主要就是講
lucene
技術的。
ldocument frequency (df):
指有多少文件包含次term。
df越大說明越不重要。
比如,在一篇英語文件中,this出現的次數更多,就說明越重要嗎?不是的,有越多的文件包含此詞
(term),
說明此詞
(term)
太普通,不足以區分這些文件,因而重要性越低。
1.3設定boost值影響相關度排序
boost是乙個加權值(預設加權值為
1.0f
),它可以影響權重的計算。
l 在索引時對某個文件中的field設定加權值高,在搜尋時匹配到這個文件就可能排在前邊。
l 在搜尋時對某個域進行加權,在進行組合域查詢時,匹配到加權值高的域最後計算的相關度得分就高。
設定boost是給域
(field)或者
document
設定的。
如果希望某些文件更重要,當此文件中包含所要查詢的詞則應該得分較高,這樣相關度排序可以排在前邊,可以在建立索引時設定文件中某些域(field)的
boost
值來實現,如果不進行設定,則
field boost
預設為1.0f
。一旦設定,除非刪除此文件,否則無法改變。
1.3.1.1**實現
@test
public
voidsetboost4createindex()throwsexception {
// 建立分詞器
analyzer analyzer =newstandardanalyzer();
indexwriterconfig cfg =newindexwriterconfig(version.lucene_4_10_3
,analyzer);
directory directory = fsdirectory.open(newfile("e:\\11-index\\0728"));
// 建立
indexwriter
物件,通過它把分好的詞寫到索引庫中
indexwriter writer =newindexwriter(directory, cfg);
document doc =newdocument();
field id =newstringfield("id","11", store.yes
);field description =newtextfield("description","測試設定
boost
值lucene"
,store.yes
);// 設定
boost
description.setboost(10.0f);
// 把域新增到文件中
doc.add(id);
doc.add(description);
writer.adddocument(doc);
// 關閉
indexwriter
writer.close();
1.3.1.2輸出
1.3.2在查詢索引時設定
在multifieldqueryparser建立時設定
boost
值。
Lucene 中相關度排序
lucene 中的相似度排序主要是在org.apache.lucene.search 包下的 similarity類中定義的,其排序演算法如下 score q,d tf t in d idf t 2 getboost t in q getboost t.field in d lengthnorm t...
Lucene相關度排序的調整
看sort的預設建構函式,相關度就是sortfield.field score和sortfield.field doc的組合。sorts by computed relevance.this is the same sort criteria as calling without a sort cr...
Lucene相關度排序學習筆記
lucene對查詢關鍵字和索引文件的相關度進行打分,得分高的就排在前邊。1.1 如何打分 lucene是在使用者進行檢索時實時根據搜尋的關鍵字計算出來的,分兩步 1 計算出詞 term 的權重。2 根據詞的權重值,計算文件相關度得分。明確索引的最小單位是乙個term 索引詞典的乙個詞 搜尋也是從te...