0

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

4

1 回答 1

1

根据查询字符串文档

不支持混合使用模糊和通配符运算符。混合时,不应用运算符之一。例如,您可以搜索 app~1(模糊)或 app*(通配符),但搜索 app*~1 不会应用模糊运算符 (~1)。

它考虑通配符或模糊,以先到者为准。对于 Abcd~2* 它只是返回所有文件

于 2020-05-27T10:12:15.563 回答