Lucene完全匹配查询

jos*_*hlf 3 lucene match

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

Art*_*wak 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"

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