3

我想构建一个 Lucene 查询,它只匹配与我指定的术语完全匹配的文档:不多也不少。“不少”部分很简单:一个包含所有强制性条款的BooleanQuery 。但是,我不确定如何做“不再”部分。本质上,我需要的是一个查询,它说“结果文档除了我在查询中指定的之外不能有任何术语。” 有任何想法吗?谢谢!

4

1 回答 1

5

我认为您可以按如下方式解决此问题:

  • 您需要创建一个分析器来提取标记,删除重复项,然后以某种顺序连接它们(例如字典顺序)。因此,如果您有三个文件:

doc1:“lorem ipsum”,doc2:“lorem ipsum dolor”,doc3:“lorem ipsum lorem”

它将为它们产生以下值

doc1:“ipsum lorem”,doc2:“dolor ipsum lorem”,doc3:“ipsum lorem”

  • 然后创建一个由该分析器填充的字段
  • 最后,将此分析器应用于您的查询并匹配此特殊字段。因此,您将用于查询“lorem ipsum”的唯一查询术语是“ipsum lorem”

实现这一点的代码太长而无法包含在答案中,但我希望您能大致了解——创建一个可以完全匹配的字段。

于 2013-06-27T19:41:44.397 回答