Lucene - 按匹配字段数排序返回结果

时间:2013-02-18 08:03:45

标签: java lucene

我有一个包含众多字段的Lucene索引。我想用它来查找按匹配字段数排名的文档,并使结果显示匹配的字段数。

在我的特定示例中,Lucene索引中的文档代表网页,字段包括标题,元描述,h1文本等。

如果我搜索“自行车”之类的术语,我希望返回任何字段中包含“bicycle”一词的所有文档。但是,我希望相关性分数表示包含关键字“bicycle”的字段数。例如,如果文档在标题和元描述中包含“自行车”,我希望该文档的排名高于仅在标题中包含“自行车”的文档。我还希望能够确定第一个文档包含两个匹配项,其中第二个文档只包含一个匹配项。特定字段中关键字的频率无关紧要。我只想知道它是否匹配。

我知道我可以使用BooleanQuery在单个字段上查找匹配项,我可以将它们组合起来在多个字段上执行AND或OR但我不确定如何执行将返回文档的查询在任何字段上匹配,但也返回一些匹配的字段的指示符。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

在Lucene中,searching on a field可以通过形成title:a web page之类的查询来完成。假设你为n个字段创建了如上所述的查询q1,q2,... qn。使用这些查询进行搜索将返回存储在列表l1,l2,.. ln中的文档ID。现在,您将它们合并到一个集合S中。对于S中的每个项目,您可以检查该项目所属的列表(或列表)。如果我理解的话,那应该可以解决你的问题。