2013-10-29 165 views
0

我有一個lucene索引,我試圖查詢。給定一個查詢Q,我想找到所有的結果,比如說最高分的10%。所以如果我的最高結果返回5.0,我想要得到所有分數大於4.5的結果。這可能嗎?目前,我只是在做lucene查詢結果x%內的結果

IndexSearches.search(Q, 1000); 

希望1000比到足以容納臨界值,然後比較分數的閾值。這似乎是額外的工作以及潛在的問題,如果我需要返回並重新查詢,如果所有初始1000都高於截止點。有沒有更簡單的方法來做到這一點?

我看過的所有收藏家似乎都以一些結果作爲參數。

回答

1

我會說簡單的答案是:不要做比較,最佳得分文件就可以了

獲取頂級X%是不是真的非常有意義。得分與查詢以及索引中的其他文檔有關,因此,根據查詢的組成,隨着截止時間觀察到的結果可能會發生很大變化,並且隨着索引數據的變化而隨時間變化。

查詢的第二個最佳結果可能有一個與最高結果不同的數量級,但這並不一定會使結果不相關,特別是對於更復雜的查詢。添加,刪除或修改文檔很容易使搜索結果從他們之前一直出現的搜索中消失。

See here,以便進一步閱讀該主題。

+0

是的。情況有點奇怪。我的文檔集是靜態的,所以添加/刪除數據的更改不是問題。我試圖對文檔進行聚類,查看哪些文檔彼此相似,並且類似文檔的數量在整個數據集中可能會有很大差異。 –