我一直在努力使用 AND 和 OR 运算符形成 solr 字段查询。为什么 solr 对于 1 和 2、3 和 4 查询返回不同的结果,即使所有查询都有相同的逻辑 -
- fq=(名称:abc AND -城市: ( 1 3 )) OR (名称:abc AND -loc:(3 K D 5 7))
- fq=(名称:abc AND (-city: ( 1 3 ) OR -loc:(3 K D 5 7)))
- fq=名称:abc&fq=-(城市:(1 3) AND loc:(3 K D 5 7))
- fq=名称:abc&fq=(-城市:(1 3) 或 -loc:(3 K D 5 7))
谁能帮我理解 solr 如何在内部执行上述查询?
这种不一致是一个已知问题,并且有一个开放的票证:https://issues.apache.org/jira/browse/SOLR-3744 https://issues.apache.org/jira/browse/SOLR-3744
该线程涵盖的内容更简单:布尔运算符的奇怪 Solr/Lucene 行为 https://stackoverflow.com/questions/7363819/weird-solr-lucene-behaviors-with-boolean-operators
您的表达式中有一些“纯负”嵌套查询
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)))
看看事情是否正确地联系起来。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)