我有一个包含众多字段的Lucene索引。我想用它来查找按匹配字段数排名的文档,并使结果显示匹配的字段数。
在我的特定示例中,Lucene索引中的文档代表网页,字段包括标题,元描述,h1文本等。
如果我搜索“自行车”之类的术语,我希望返回任何字段中包含“bicycle”一词的所有文档。但是,我希望相关性分数表示包含关键字“bicycle”的字段数。例如,如果文档在标题和元描述中包含“自行车”,我希望该文档的排名高于仅在标题中包含“自行车”的文档。我还希望能够确定第一个文档包含两个匹配项,其中第二个文档只包含一个匹配项。特定字段中关键字的频率无关紧要。我只想知道它是否匹配。
我知道我可以使用BooleanQuery
在单个字段上查找匹配项,我可以将它们组合起来在多个字段上执行AND或OR但我不确定如何执行将返回文档的查询在任何字段上匹配,但也返回一些匹配的字段的指示符。
非常感谢任何帮助!
答案 0 :(得分:1)
在Lucene中,searching on a field可以通过形成title:a web page
之类的查询来完成。假设你为n个字段创建了如上所述的查询q1,q2,... qn。使用这些查询进行搜索将返回存储在列表l1,l2,.. ln中的文档ID。现在,您将它们合并到一个集合S中。对于S中的每个项目,您可以检查该项目所属的列表(或列表)。如果我理解的话,那应该可以解决你的问题。