Lucene相關度排序的調整

2021-04-22 06:58:22 字數 1093 閱讀 6151

看sort的預設建構函式,相關度就是sortfield.field_score和sortfield.field_doc的組合。

/** 

* sorts by computed relevance. this is the same sort criteria as calling

* without a sort criteria,

* only with slightly more overhead.

*/public sort() );

}那麼該如何構造我們需要的sortfield呢?請看sortfield的乙個建構函式,有乙個引數reverse可供我們調整結果集的順序。

/** creates a sort, possibly in reverse, by terms in the given field with the

* type of term values explicitly given.

* @param field  name of field to sort by.  can benullif

*typeis score or doc.

* @param type   type of values in the terms.

* @param reverse true if natural order should be reversed.

*/public sortfield (string field, int type, boolean reverse) 

由此可見,只要構造乙個sortfield就可以實現我們要的功能,請看:

// 評分降序,評分一樣時後索引的排前面

new sortfield 

// 評分公升序,評分一樣時後索引的排前面,呵呵,此為最不相關的排前面,挺有趣的

new sortfield 

呵呵,只要將此sortfield作為引數傳入sort的建構函式得到sort的乙個instance,將此instance傳入searcher.search(query, sort)即可得到了期望的結果。

具體例項可參考隱士做的搜尋站http://so.mdbchina.com。

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相關度排序學習筆記

lucene對查詢關鍵字和索引文件的相關度進行打分,得分高的就排在前邊。1.1 如何打分 lucene是在使用者進行檢索時實時根據搜尋的關鍵字計算出來的,分兩步 1 計算出詞 term 的權重。2 根據詞的權重值,計算文件相關度得分。明確索引的最小單位是乙個term 索引詞典的乙個詞 搜尋也是從te...

lucene 3(相關度排序)

相關度排序這個東西顧名思義,在上文中我們講到了乙個打分的問題,就是說的在查詢關鍵字匹配的時候,相識度越高的就會打分越高,就會越靠前。打分的兩個步驟 1.根據詞計算詞的權重。2.根據詞的權重打分。詞的權重 意思就是詞的重要性,而且詞就是我們上文講到的term,而影響詞的權重的有兩個東西 tf 詞在該文...