相關度排序

2021-08-09 09:17:18 字數 2693 閱讀 7920

相關度排序是查詢結果按照與查詢關鍵字的相關性進行排序,越相關的越靠前。比如搜尋「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...