1

我有一个包含许多字段的 Lucene 索引。我想用它来查找按匹配字段数排序的文档,并让结果表明匹配的字段数。

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

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

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

任何帮助将非常感激!

4

1 回答 1

1

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

于 2013-02-19T03:19:42.533 回答