我在solr查询中遇到一些令人困惑的行为(从技术上讲是Lucene解析),可以简化为以下查询:
_query_:"foo:\"a b\"~3" AND foo:"c d"~6
使用debugQuery
选项,我可以看到它被解析为:
+PhraseQuery(foo:\"a b\"~3) +PhraseQuery(foo:\"c d\")
或作为parsedquery_toString,+foo:\"a b\"~3 +foo:\"c d\"
从查询右侧到〜6的接近发生了什么?如上例所示,这仅在将嵌套查询与非嵌套查询结合使用时才会发生。
通过比较,不使用嵌套查询并编写
foo:"a b"~3 AND foo:"c d"~6
正确解析为
+PhraseQuery(foo:\"a b\"~3) +PhraseQuery(foo:\"c d\"~6)
或作为parsedquery_toString,+foo:\"a b\"~3 +foo:\"c d\"~6
或者使用两个嵌套查询,如:
_query_:"foo:\"a b\"~3" AND _query_:"foo:\"c d\"~6"
还可以正确解析为与查询相同,而不使用嵌套查询。
为什么在第一个示例中删除了〜6的邻近搜索?
我正在运行Solr版本4.10.3,但已升级到7.5.0,并且发现了相同的行为。