我正在运行以下两个查询,并期待相同的结果,但事实并非如此,是否有人知道为什么?
第一次查询
_query_:"{!complexphrase inOrder=true}accounts:\"functional currency\"" AND (-_query_:"{!complexphrase inOrder=false}accounts:\"functional currency GBP\"~11" AND -_query_:"{!complexphrase inOrder=false}accounts:\"functional currency pound*\"~11" AND -_query_:"{!complexphrase inOrder=false}accounts:\"functional currency sterling\"~11" AND *:*)
第二个查询
_query_:"{!complexphrase inOrder=true}accounts:\"functional currency\"" AND (-accounts:"functional currency GBP"~11 AND -_query_:"{!complexphrase inOrder=false}accounts:\"functional currency pound*\"~11" AND -accounts:"functional currency sterling"~11 AND *:*)
两个查询的区别在于
第一个查询是:P AND(Q AND B AND R AND *:*)
第二个查询如下:P AND(A AND B AND C AND *:*)
P : _query_:"{!complexphrase inOrder=true}accounts:\"functional currency\""
Q : -_query_:"{!complexphrase inOrder=false}accounts:\"functional currency GBP\"~11"
B : -_query_:"{!complexphrase inOrder=false}accounts:\"functional currency pound*\"~11"
R : -_query_:"{!complexphrase inOrder=false}accounts:\"functional currency sterling\"~11"
A : -accounts:"functional currency GBP"~11
C : -accounts:"functional currency sterling"~11
我想相信查询Q与A相同而R与C相同。
因此,两个查询提取的结果应该相同。
问题是Solr / Lucene在与嵌套查询分组时忽略了邻近搜索,如下面链接所述。
Solr/Lucene is ignoring proximity search when grouped with a nested query
该问题已修复一次,邻近搜索也变为子查询。