我有一个lucene索引,我正在尝试查询。给定一个查询Q
,我想找到所有最高分的结果,比如10%。因此,如果我的最高结果返回5.0,我想得到所有得分大于4.5的结果。这可能吗?目前我正在做
IndexSearches.search(Q, 1000);
希望1000足以包含截止值,然后将分数与阈值进行比较。如果我需要返回并再次查询是否所有初始1000都高于截止值,这似乎是额外的工作以及潜在的问题。有更简单的方法吗?
我看过的所有收藏家似乎都把一些结果作为一个论据。
答案 0 :(得分:1)
我会说简短的回答是:不要这样做
获得与最佳得分文档相比的前x%并不是非常有意义。分数是相对于查询和索引中的其他文档,因此使用此截止值观察到的结果可能会根据查询的构成而变化很大,并且随着索引数据的更改而随时间变化。
查询的第二个最佳结果可能具有与最高结果不同的分数,但这并不一定会使结果无关紧要,尤其是对于更复杂的查询。添加,删除或修改文档很容易使结果从以前一直出现的搜索中消失。
See here,有关该主题的进一步阅读。