2013-02-18 53 views
1

我有许多字段的Lucene索引。我想用它来查找按照匹配字段数量排列的文档,并让结果显示有多少字段匹配。Lucene - 返回按匹配字段数量排序的结果

在我具体的例子,在Lucene索引的文件表示网页和领域是东西如标题,meta描述,H1文字等

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

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

任何帮助将不胜感激!

回答

1

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

+0

谢谢rivu。我试过这种方法,它效果很好! – nolt2232 2013-02-19 07:18:22

+0

谢谢。很高兴它有帮助。 – rivu 2013-02-19 16:59:45

相关问题