0

我有一个正在尝试查询的 lucene 索引。给定一个查询Q,我想找到所有在最高分之内的结果,比如 10%。因此,如果我的最高结果返回 5.0,我想获得所有分数大于 4.5 的结果。这可能吗?目前我只是在做

 IndexSearches.search(Q, 1000);

希望 1000 足以包含截止值,然后将分数与阈值进行比较。如果我需要返回并再次查询所有初始 1000 是否都高于截止值,这似乎是额外的工作以及潜在的问题。有没有更简单的方法来做到这一点?

我看过的所有收集器似乎都将一些结果作为论据。

4

1 回答 1

1

我会说简短的回答是:不要这样做

与最好的评分文件相比,获得最高的 x% 并不是很有意义。分数与查询和索引中的其他文档相关,因此使用此截止值观察到的结果可能会因查询的组成而有很大差异,并且随着索引数据的变化而随时间变化。

查询的次优结果的分数可能与顶级结果不同一个数量级,但这并不一定会使结果无关紧要,尤其是对于更复杂的查询。添加、删除或修改文档可以很容易地使结果从以前一直出现的搜索中消失。

有关该主题的进一步阅读,请参见此处。

于 2013-10-29T21:45:20.380 回答