当在同一个单词上使用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 个变体,然后对每个变体进行前缀搜索,即