首页 > 解决方案 > 是否在 simple_query_string 中使用模糊性禁用前缀搜索

问题描述

当在同一个单词上使用simple_query_string前缀运算符* 模糊值~N时,前缀搜索似乎被禁用。

{
  "query": {
    "simple_query_string": {
      "query": "Abcd*~2",
      "fields": ["name"]
    }
  }
}

很明显,每当您将模糊度设置为 0 并且查询变为时,前缀都会被禁用,Abcd*~0然后就没有前缀搜索也没有模糊性。

文档中没有提到这一点,所以我不确定我是否做错了。

我试过了:


1我假设在这种情况下~2不应将其解释为 SLOP 运算符,因为没有短语(没有引号)。

2我可以理解,合成这些效果可能会产生太多可能的变体——模糊添加 50 个变体,然后对每个变体进行前缀搜索,即

标签: elasticsearchelasticsearch-7

解决方案


根据查询字符串文档

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

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


推荐阅读