首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elasticsearch模糊查询

Elasticsearch模糊查询
EN

Stack Overflow用户
提问于 2021-04-05 22:22:45
回答 2查看 75关注 0票数 0

我正在尝试进行模糊搜索,应该是这样的

我的索引是这样的

代码语言:javascript
复制
{
  "test": {
    "aliases": {},
    "mappings": {
      "properties": {
        "first_name": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "last_name": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        }
      }
    },
    "settings": {
      "index": {
        "routing": {
          "allocation": {
            "include": {
              "_tier_preference": "data_content"
            }
          }
        },
        "number_of_shards": "1",
        "provided_name": "test",
        "creation_date": "1617623285742",
        "number_of_replicas": "1",
        "uuid": "MxSWoxSoS6y6x5Jdt2AvMQ",
        "version": {
          "created": "7120099"
        }
      }
    }
  }
}

在该索引内有一个数据,其中包含

代码语言:javascript
复制
{
  "first_name": "homo sapiens",
  "last_name": "moho"
}

我试着这样查询,但它不起作用

代码语言:javascript
复制
{
    "query": {
        "match": {
            "first_name": {
                "query": "hosan",
                "fuzziness": "AUTO:0,0"
            }
        }
    }
}

但如果我用"hoom","homoo“或"homos”搜索,它就会起作用。

有人能帮我做这个模糊搜索吗?谢谢!

EN

回答 2

Stack Overflow用户

发布于 2021-04-07 10:10:41

对于由5个字符组成的查询条件( hosan ),模糊值auto将只给出编辑距离值1,这不足以让您从hosan转换为homo。使用auto可以实现的最大编辑距离值是2,只有在查询条件大于5个字符时才能实现。您可以强制将模糊值设置为3或4以尝试实现所需的结果,但ES默认值为max 2的原因是,较高的数值可能会开始产生意想不到且难以操作的结果。还请注意,您的其他搜索示例(hoom、homoo等)仅在单词homo上匹配。默认情况下,匹配查询是OR查询,并且将返回任何匹配术语的结果。

仅供参考,对于长度为1-2个字符的查询条件,auto会给出0个编辑距离;对于3-5个字符的查询条件,会给出1个编辑距离;对于大于5个字符的查询条件,会给出2个编辑距离。

因此,我会将你的模糊值增加1,直到你在hosan上搜索时得到返回的结果,但只是为了证明我在这里概述的内容。我个人认为,在任何生产环境中,模糊值都不会超过2,也许3。

票数 0
EN

Stack Overflow用户

发布于 2021-04-07 16:59:22

经过对弹性搜索和模糊搜索的大量研究,我发现仅仅使用模糊搜索是不可能得到像“智人”这样带有搜索关键词"hosan“的结果的。然后,为了解决这个问题,我需要将elasticsearch中的模糊查询与正则查询相结合

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66954537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档