我需要0和1如何規範化Lucene分數?
例如,隨機查詢將返回以下的分數之間的標準化得分的Lucene ...
8.864665
2.792687
2.792687
2.792687
2.792687
0.49009037
0.33730242
0.33730242
0.33730242
0.33730242
什麼是最大的成績? 10.0?
謝謝
我需要0和1如何規範化Lucene分數?
例如,隨機查詢將返回以下的分數之間的標準化得分的Lucene ...
8.864665
2.792687
2.792687
2.792687
2.792687
0.49009037
0.33730242
0.33730242
0.33730242
0.33730242
什麼是最大的成績? 10.0?
謝謝
你可以把所有的得分與最高分獲得0和1之間
得分不過,請注意,歸一化等級應採用比較單一的結果僅查詢。比較來自2個不同查詢的結果的分數(正常化或不正確)是不正確的。
有沒有好的標準方法來標準化與lucene分數。閱讀此:ScoresAsPercentages和這explanation
在您的情況下,最高分是第一個結果的分數,如果結果按分數排序。但是對於其他查詢,這個分數將會不同。
Solr沒有最高分,它取決於太多的變量,所以無法預測。
但是你可以實現一些所謂的規範化分數(Scores As Percentages),這是不推薦的。
更多細節請參見相關鏈接:
how do I normalise a solr/lucene score?
Remove results below a certain score threshold in Solr/Lucene?
定期正常化只會幫助你比較查詢之間的得分分佈(和他們的檢索列表) 。 您不能簡單地將分數標準化以比較查詢之間的性能。 想想所有檢索到的文檔高度相關並且接收相同(高分)的查詢,並且在另一個查詢中檢索到的列表包含大麥相關文檔(再次,具有相同分數) - 現在,不管每個查詢你做出的標準化 - 標準化的分數將是相同的。
您需要考慮可以將所有分數都提高到相同水平的交叉查詢因子。
例如 - 也許計算查詢和整個索引,並使用與文檔得分
如果要比較兩個或多個查詢沿劃線某種程度上的相似,我發現了一個解決方法。 您可以使用LevenstheinDistance或LuceneLevenstheinDistance(Damerau)類將您的得分最高的文檔與您的queryterm進行比較,以獲得您的queryterm與結果之間的距離。結果是它們之間的相似性。爲每個要比較的查詢執行此操作。現在您有了一個工具來使用querytherm的相似性和最高結果來比較您的查詢。您現在可以選擇具有最高相似度的查詢,並將其用於下一個適當的操作。
//Damerau LevenstheinDistance
LuceneLevenshteinDistance d = new LuceneLevenshteinDistance();
similiarity = d.getDistance(queryterm, yourResult);
@ nikhil500真的嗎?所以如果我有一堆查詢,我怎麼能看到哪些表現更好? – aneuryzm 2011-03-21 16:01:56
請詳細說明如何(以及爲什麼)要比較多個查詢的結果。不同查詢的得分並不能直接比較,但根據您的具體問題,我們可能會提出一些解決方案。 – nikhil500 2011-03-22 01:45:00
@ nikhil500我的問題是,對於每個查詢,我必須結合多個分數(來自其他軟件),除了Lucene分數以外,它們都被標準化(0到1之間)。 – aneuryzm 2011-03-22 05:55:53