看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 benull
if
*type
is 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 詞在該文...