solr - 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,我发现相同的行为。
解决方案
推荐阅读
- android - BottomAppBar 下的 Android 位置视图
- spring-boot - Spring Boot + Thymeleaf CSS 文件无法访问并出现 500 错误未找到模板
- java - 想在 maven 构建后使用 exec-maven-plugin 执行 java 类,而不管 maven 构建状态如何
- php - 如果为空,则从高级自定义字段中删除空格
- python - 带有 PyLint 和 autoPep8 的 Visual Studio 代码:如何避免 PyLint 抱怨我的行长?
- eps - 如何创建一个空白但有效的 EPS?
- r - 添加计算序号的列
- javascript - 使用 window.open() 通过 iframe 打开 PDF 时卡住
- html - 使用元视口宽度会导致溢出
- android - 错误:“无法找到 UnityARCore”和“DllNotFoundException”