Search 与的组合,或与不在分组中
测试:1而非布尔值:真 返回5个文档 但是 测试:1和(非布尔值:真) 返回0个文档 为什么? 请向我解释lucene查询格式中括号的值当您将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任何要查找和返回的内容。对表格的任何查询: (
(非bool:true)
放在括号中时,它将成为一个子查询,独立于查询测试:1
执行NOT bool:true
告诉它什么不匹配,但不给Lucene任何要查找和返回的内容。对表格的任何查询:
(any query finding results) AND (NOT something)
将找到零结果,因为它本身,notsomething
什么也找不到,而(something)和(nothing)
什么也不返回。通过在lonelyNOT
子句之前首先获取所有值,可以执行类似的搜索,如:
test:1 AND (*:* AND NOT bool:true)
但是,这将表现得非常糟糕,您的第一个示例是:
test:1 AND NOT bool:true
绝对是正确的。谢谢您的解释