Search 与的组合,或与不在分组中

Search 与的组合,或与不在分组中,search,lucene,parentheses,query-parser,booleanquery,Search,Lucene,Parentheses,Query Parser,Booleanquery,测试:1而非布尔值:真 返回5个文档 但是 测试:1和(非布尔值:真) 返回0个文档 为什么? 请向我解释lucene查询格式中括号的值当您将(非bool:true)放在括号中时,它将成为一个子查询,独立于查询测试:1执行NOT子句只从结果集中删除元素,它们什么也找不到。例如,在SQL中,隐式地从每个可用值开始,并筛选不匹配子句的元素。在Lucene中,从零开始,然后根据子句查找结果。查询NOT bool:true告诉它什么不匹配,但不给Lucene任何要查找和返回的内容。对表格的任何查询: (

测试:1而非布尔值:真

返回5个文档

但是

测试:1和(非布尔值:真)

返回0个文档

为什么?

请向我解释lucene查询格式中括号的值

当您将
(非bool:true)
放在括号中时,它将成为一个子查询,独立于查询
测试:1
执行NOT子句只从结果集中删除元素,它们什么也找不到。例如,在SQL中,隐式地从每个可用值开始,并筛选不匹配子句的元素。在Lucene中,从零开始,然后根据子句查找结果。查询
NOT bool:true
告诉它什么不匹配,但不给Lucene任何要查找和返回的内容。对表格的任何查询:

(any query finding results) AND (NOT something)
将找到零结果,因为它本身,
notsomething
什么也找不到,而
(something)和(nothing)
什么也不返回。通过在lonely
NOT
子句之前首先获取所有值,可以执行类似的搜索,如:

test:1 AND (*:* AND NOT bool:true)
但是,这将表现得非常糟糕,您的第一个示例是:

test:1 AND NOT bool:true

绝对是正确的。

谢谢您的解释