首页 > 解决方案 > Solr/Lucene 在与嵌套查询分组时忽略邻近搜索

问题描述

我在使用 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,我发现相同的行为。

标签: solrlucene

解决方案


推荐阅读