千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > 深入探究ES Fuzzy

深入探究ES Fuzzy

来源:千锋教育
发布人:xqq
时间: 2023-11-22 01:36:43 1700588203

一、什么是ES Fuzzy

ES Fuzzy是Elasticsearch中实现模糊搜索的一种技术,它可以处理用户输入中潜在的拼写错误或者单词变形,从而提高搜索结果的准确率。

与传统的全文搜索不同,ES Fuzzy可以考虑到单词之间的相似度以及单词本身的模糊匹配,将不同的查询和文档之间建立关联,提高搜索的效果。

ES Fuzzy的核心思想是使用编辑距离算法来计算查询中的单词与文档中的单词之间的相似度。编辑距离是指将查询单词通过添加、删除、替换等操作转换为文档中的单词所需的最小步数。通过设置一个合理的阈值,可以使得查询单词和文档单词之间的编辑距离小于该阈值的文档被返回。

二、ES Fuzzy的特性

1、支持多种模糊匹配方式

ES Fuzzy支持多种模糊匹配方式,例如:


  GET /_search
  {
      "query": {
          "fuzzy": {
              "company_name": {
                  "value": "toglloom",
                  "fuzziness": "AUTO"
              }
          }
      }
  }

其中,fuzziness参数可以设置为AUTO、1、2等,表示不同的模糊匹配方式。

2、支持指定编辑距离

编辑距离是指从一个单词变成另一个单词所需的最小操作数。在ES Fuzzy中,可以通过fuzziness参数来指定所需的编辑距离。


  GET /_search
  {
      "query": {
          "fuzzy": {
              "age": {
                  "value": "2",
                  "fuzziness": 1
              }
          }
      }
  }

上面的查询请求会返回年龄等于2、或者编辑距离为1的文档。

3、支持前缀匹配和后缀匹配

ES Fuzzy可以进行前缀匹配和后缀匹配,指定prefix_length可以控制前缀匹配的长度,而suffix_length可以控制后缀匹配的长度。


  GET /_search
  {
      "query": {
          "fuzzy": {
              "company_name": {
                  "value": "googl",
                  "fuzziness": 1,
                  "prefix_length": 3,
                  "max_expansions": 20
              }
          }
      }
  }

三、ES Fuzzy的应用场景

ES Fuzzy可以应用于很多搜索场景中,例如:

1、搜索引擎中的拼写纠错。

拼写纠错一直是搜索引擎中的重要问题。ES Fuzzy可以很好地解决这个问题,从而提高相关搜索结果的准确率。

2、搜索商品名称或者描述。

商品名称或者描述中常常会出现拼写错误,使用ES Fuzzy可以将这些错误考虑在内,从而提高商品搜索结果的准确率。

3、搜索人名或者地名。

人名和地名常常会因为语言和拼写规则的差异而出现拼写错误,ES Fuzzy可以将这些错误考虑在内,从而提高搜索结果的准确率。

四、ES Fuzzy示例代码


  GET /index/type/_search
  {
    "query": {
      "fuzzy": {
        "name": {
          "value": "jems",
          "fuzziness": "AUTO"
        }
      }
    }
  }

上面的示例中,我们使用ES Fuzzy来搜索name字段等于jems的文档,其中fuzziness参数设置为AUTO,即自动匹配模糊匹配程度。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT