我们有一个简单的域
FirstName_s:"Bob"
返回 40 个文档,并且
-Department_t:"Ninjas"
返回所有文件(我们没有忍者部门)。
我们期望查询
(FirstName_s:"Bob") OR (-Department_t:"Ninjas")
退回所有文件,但它只退回了原始的 40 份文件。
我们尝试了几种不同的排序,尝试使用“NOT”而不是“-”都无济于事。
这是预期的行为吗?也许更重要的是,我们如何获得我们期望的行为?
我们有一个简单的域
FirstName_s:"Bob"
返回 40 个文档,并且
-Department_t:"Ninjas"
返回所有文件(我们没有忍者部门)。
我们期望查询
(FirstName_s:"Bob") OR (-Department_t:"Ninjas")
退回所有文件,但它只退回了原始的 40 份文件。
我们尝试了几种不同的排序,尝试使用“NOT”而不是“-”都无济于事。
这是预期的行为吗?也许更重要的是,我们如何获得我们期望的行为?
我偶然发现了https://issues.apache.org/jira/browse/SOLR-2209所以括号可能会导致错误。这行得通吗?
FirstName_s:"Bob" OR -Department_t:"Ninjas"
以某种方式重写查询,它不会包含 OR(使用De_Morgan 定律)有帮助吗?
-(-FirstName_s:"Bob" AND Department_t:"Ninjas")
事实证明,这是多值字段的问题,并且它们的行为方式不是。
我们必须将所有对多值字段的非查询修改为
(*:* -department_t:"Ninjas")