我一直在努力用AND和OR运算符形成一个solr字段查询.为什么solr为1和2,3和4查询返回不同的结果,即使所有查询都具有相同的逻辑 -
有谁可以帮我理解solr内部如何执行上述查询?
这种不一致是一个已知的问题,并且有一张开放的票:https: //issues.apache.org/jira/browse/SOLR-3744
这个线程涵盖了更简单的术语: 使用布尔运算符的奇怪的Solr/Lucene行为
您的表达式中有一些"纯负面"嵌套查询,Lucene查询解析器希望"否定查询"与正选择查询一起表达.换句话说,除了城市之外的任何东西:foo都被正确地写成了*:* AND -city:foo.
通过以下更改尝试您的测试:
1. <Same>
2. fq=(name:abc AND (*:* AND -city:(1 3)) OR (*:* AND -loc:(3 K D 5 7)))
3. <Same>
4. fq=name:abc&fq=((*:* AND -city:(1 3)) OR (*:* AND -loc:(3 K D 5 7)))
Run Code Online (Sandbox Code Playgroud)
并查看是否有正确的事情.
| 归档时间: |
|
| 查看次数: |
9337 次 |
| 最近记录: |