白话Elasticsearch27-深度探秘搜索技术之误拼写时的fuzzy模糊搜索技术

举报
小工匠 发表于 2021/09/11 01:03:08 2021/09/11
【摘要】 文章目录 概述官方指导例子推荐写法 概述 继续跟中华石杉老师学习ES,第27篇 课程地址: https://www.roncoo.com/view/55 官方指导 http...


在这里插入图片描述

概述

继续跟中华石杉老师学习ES,第27篇

课程地址: https://www.roncoo.com/view/55


官方指导

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-fuzzy-query.html

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

官方Blog : https://www.elastic.co/blog/found-fuzzy-search 强烈推荐


例子

我们知道,搜索的时候,可能输入的搜索文本会出现误拼写的情况。 举个例子 如下两个doc

doc1: hello world
doc2: hello java

  
 
  • 1
  • 2

我们本来是想搜索hello world ,结果手误输成了hallo world ?怎么办呢 ,还能继续搜索hello world吗?

fuzzy搜索技术 --> 自动将拼写错误的搜索文本,进行纠正,纠正以后去尝试匹配索引中的数据

实例 如下:

模拟一批数据 

POST /my_index/my_type/_bulk
{ "index": { "_id": 1 }}
{ "text": "Surprise me!"}
{ "index": { "_id": 2 }}
{ "text": "That was surprising."}
{ "index": { "_id": 3 }}
{ "text": "I wasn't surprised."}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

查询

GET /my_index/my_type/_search 
{
  "query": {
    "fuzzy": {
      "text": {
        "value": "surprize",
        "fuzziness": 2
      }
    }
  }
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

返回结果:

在这里插入图片描述

,让我们来分析下

surprize --> 拼写错误 --> surprise --> s -> z

surprize --> surprise -> z -> s,纠正一个字母,就可以匹配上,所以在fuziness指定的2范围内

surprize --> surprised -> z -> s,末尾加个d,纠正了2次,也可以匹配上,在fuziness指定的2范围内

surprize --> surprising -> z -> s,去掉e,ing,3次,总共要5次,才可以匹配上,始终纠正不了


  • fuzzy搜索以后,会自动尝试将你的搜索文本进行纠错,然后去跟文本进行匹配
  • fuzziness,你的搜索文本最多可以纠正几个字母去跟你的数据进行匹配,默认如果不设置,就是2

推荐写法

一般不用上面的那种写法,常用写法如下:

GET /my_index/my_type/_search 
{
  "query": {
    "match": {
      "text": {
        "query": "SURPIZE ME",
        "fuzziness": "AUTO",
        "operator": "and"
      }
    }
  }
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

返回结果:

在这里插入图片描述

文章来源: artisan.blog.csdn.net,作者:小小工匠,版权归原作者所有,如需转载,请联系作者。

原文链接:artisan.blog.csdn.net/article/details/98677265

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。