当将simple_query_string
与前缀运算符*
一起使用并且在同一单词上~N
模糊值时,前缀搜索似乎被禁用。
{
"query": {
"simple_query_string": {
"query": "Abcd*~2",
"fields": ["name"]
}
}
}
很明显,每当将模糊性设置为 0 并且查询变得Abcd*~0
时,前缀就会被禁用,然后没有前缀搜索和模糊性。
文档中没有提到这一点,所以我不确定我是否做错了。
我试过:
- 交换运算符顺序:
Abcd~2*
--_explain
这引入了模糊性变化,但省略了前缀运算符 - 使用括号作为优先级:
(Abcd*)~2
-- 在_explain
中使用前缀,但省略模糊运算符1 - 复制单词:
(Abcd* Abcd~2)
- 这有效,它显然显示了两个查询的重聚,而不是两个效果的组成2。
1我假设在这种情况下~2
不应该被解释为 SLOP 运算符,因为没有短语(没有引号(。
2我可以理解合成这些效果可能会产生太多可能的变体——模糊添加 50 个变体,然后为每个变体进行前缀搜索,即
根据查询字符串文档
不支持混合模糊运算符和通配符运算符。混合时,一个 的运算符不适用。例如,您可以搜索 app~1 (模糊(或应用程序*(通配符(,但搜索应用程序*~1不应用 模糊运算符 (~1(。
它考虑通配符或模糊,以先到者为准。 对于 Abcd~2* 它只是返回所有文档