Lucene完全匹配查询

时间:2013-06-27 16:45:02

标签: lucene match

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

1 个答案:

答案 0 :(得分: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”

实现这一目标的代码太长而无法适应答案,但我希望你能得到一般的想法 - 创建一个可以完全匹配 的字段。