java - Lucene + 经典查询搜索语法与使用 AND 相同

标签 java lucene

表单的 Lucene 查询

field1:+"term1" field2:+"term2"

似乎等同于

field1:"term1" OR field2:"term2"

我希望它等同于

field1:"term1" AND field2:"term2"

(即对于我对数据库的特定查询,查询 1 和 2 返回 10 条记录,而查询 3 返回 6 条记录,我希望查询 2 仅返回 6 条记录)

我知道如果没有 ORAND 它默认为 OR 但我认为 + 意味着该术语必须匹配,否则 + 的意义何在 我误会了什么?

最佳答案

在我看来,该查询与其中任何一个都不等同。

field1:+"term1" field2:+"term2"

只是无效的语法,标准的 QueryParser 确实会为它踢出一个 ParseException(也许您的代码正在默默地吞下异常或其他什么?)。

应该是:

+field1:"term1" +field2:"term2"

关于java - Lucene + 经典查询搜索语法与使用 AND 相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51398936/

相关文章:

java - 当 hibernate 决定更新对象时更新日期属性

Solr - 突出显示查询短语

elasticsearch - 您如何查找inner_hits计数为N的文档?

Java HashMap put() 奇怪的行为

Java 日期无法正常工作

java - Lucene,多词搜索,某一词必须精确匹配

java - 为什么mongodb oplog总是空的?

将比较两个字段的 Lucene 查询

java - java中如何传递参数

java - @parameters 方法在@beforeclass 方法之前执行