2013-10-29 75 views
0

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

IndexSearches.search(Q, 1000); 

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

我看过的所有收藏家似乎都以一些结果作为参数。

回答

1

我会说简单的答案是:不要做比较,最佳得分文件就可以了

获取顶级X%是不是真的非常有意义。得分与查询以及索引中的其他文档有关,因此,根据查询的组成,随着截止时间观察到的结果可能会发生很大变化,并且随着索引数据的变化而随时间变化。

查询的第二个最佳结果可能有一个与最高结果不同的数量级,但这并不一定会使结果不相关,特别是对于更复杂的查询。添加,删除或修改文档很容易使搜索结果从他们之前一直出现的搜索中消失。

See here,以便进一步阅读该主题。

+0

是的。情况有点奇怪。我的文档集是静态的,所以添加/删除数据的更改不是问题。我试图对文档进行聚类,查看哪些文档彼此相似,并且类似文档的数量在整个数据集中可能会有很大差异。 –