【问题标题】:Fuzzy Match Query is not considering whitespace模糊匹配查询不考虑空格
【发布时间】:2018-07-10 11:59:05
【问题描述】:

我有一个名为郊区的字段,我需要匹配以下条件;

  • 1 个转位是可能的
  • 可以进行 1 次更改
  • 第一个字符必须正确

鉴于我在郊区有空格,我需要或多或少地将它们视为一个单词而不是一个短语。所以如果我要搜索

'Sheoaks'

然后

“She Oaks”应该是匹配的

目前,当我在郊区执行匹配查询时,使用:

  • 模糊度 = 1
  • 运算符 = 与
  • fuzzy_transpositions=true
  • max_expansions = 50
  • prefix_length = 1

我只有在输入查询时才会得到匹配

的?? O??'

  • “S”必须正确(需要)
  • “ ”必须存在(不需要)
  • “O”必须正确(不需要)
  • 还有“?”允许不正确(期望)

我想要

'S?????'

只要满足以上限制

【问题讨论】:

  • 哪个分析器已映射到该字段?
  • 我只是使用标准分析仪

标签: elasticsearch


【解决方案1】:

这是预期的行为:

使用standard analyzer "she Oaks" 将生成两个令牌:["she", "oaks"] 和 sheoaks 仅一个 ["sheoaks"]

因此,您的匹配查询尝试匹配 ["she", "oaks"]["sheoaks"]。但是从“she”到“sheoaks”以及从“oaks”到“sheoaks”的换位不止1个。所以不匹配。

您需要在index time and search time 使用keyword analyzer

它将在索引时生成["sheoaks"],在搜索时生成["she oaks"](来自您的示例)。然后将只有 1 个转置,它应该可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-05
    • 2015-04-30
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    相关资源
    最近更新 更多