我正在处理类似于以下的solr查询:
((myField:superneat AND myOtherField:somethingElse) OR NOT myField:superneat)
Run Code Online (Sandbox Code Playgroud)
运行此时,不会返回任何结果.使用OR NOT任一侧的标准会返回我期望的结果 - 它们只是不能很好地协同工作.在myField匹配superneat的情况下,我还打算确保将myOtherField设置为somethingElse,但如果myField不是superneat,则将其包含在结果中.
有人能解释为什么solr没有返回这种查询的结果吗?是否应该以某种方式重构查询 - 或者是否有不同的方法可以使用solr来实现所需的结果?
我想在Solr中的文本字段上执行搜索.我想返回范围内或没有值的所有匹配.这两个搜索词是独立的:
myfield:[start TO finish]
-myfield:[* TO *]
Run Code Online (Sandbox Code Playgroud)
第一个返回范围内的所有匹配项.第二个返回所有没有"myfield"字段值的匹配项. 问题是将这两者结合起来.
这不返回任何匹配项:
myfield:[start TO finish] OR -myfield:[* TO *]
Run Code Online (Sandbox Code Playgroud)
这将返回开始和结束之间的匹配,但不返回空条目:
myfield:[start TO finish] OR (-myfield:[* TO *])
Run Code Online (Sandbox Code Playgroud)