Lucene 精确匹配查询

标签 lucene match

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

最佳答案

我认为你可以按如下方式解决这个问题:

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

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”

实现此目的的代码太长,无法放入答案中,但我希望您能理解总体思路——创建一个您可以完全匹配的字段。

关于Lucene 精确匹配查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17348789/

相关文章:

java - 需要帮助重新构建和优化大型 solr 索引

将与另一个 data.frame 中的行名匹配的列中的值替换为关联值

Java 匹配循环

Python Pandas 根据标题值匹配 Vlookup 列

r - 匹配不同长度的向量列表

solr - Lucene QueryParse 丢弃“解析时

elasticsearch - 使用 Lucene 目录作为主文件存储有哪些缺点?

lucene - 加速 Solr 索引

java - 如何在 java 中配置和使用 KStem?