Lucene:比较各种查询的结果

时间:2011-07-24 08:13:02

标签: java search lucene indexing

我需要比较不同Lucene查询中搜索结果的相关性。

实际上我有一组索引的文本文档,当在这个集合上进行搜索时,我想要返回的不是这个集合中的N个最佳结果,而是所有适合查询的结果“足够好”。

这个“足够好”的参数将是可配置的(例如0(文档绝对不相关)和1(文档是最佳匹配))但我希望它以相同的方式影响所有查询。

从我在互联网上找到的内容来看,这不是一项简单的任务。有人能给我一个关于如何处理这个问题的提示吗?

非常感谢!

3 个答案:

答案 0 :(得分:1)

即使您将分数标准化为[0,1]区间,比较不同查询的分数显然也是不正确的,请参阅How to normalize Lucene scores?

答案 1 :(得分:0)

我只是在寻找同一个问题的答案。这是我在环顾四周时所发现的:

in general it is not possible to compare across queries期间,如果您有某些受限制类型的查询,例如BooleanQuery只包含TermQuery,则it may be possible to compare results across queries if you disable the coord boost in the BooleanQuery constructor

答案 2 :(得分:0)

如果您想比较两个或更多查询,我找到了一种解决方法。您可以使用 LevenstheinDistance LuceneLevenstheinDistance(Damerau)类将您的最高得分文档与您的queryterm进行比较,以获得您的queryterm与结果之间的距离。

结果是它们之间的相似性。对要比较的每个查询执行此操作。现在,您可以使用queryterm的相似性和最高结果来比较查询。您现在可以选择具有最高相似度得分的查询,并将其用于下一步的正确操作。

//Damerau LevenstheinDistance
LuceneLevenshteinDistance d = new LuceneLevenshteinDistance();

similiarity = d.getDistance(queryterm, yourResult );