进阶-第28__深度探秘搜索技术_实战掌握误拼写时的fuzzy模糊搜索技术

搜索的时候,可能输入的搜索文本会出现误拼写的情况

 

doc1: hello world

doc2: hello java

 

搜索:hallo 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."}

 

 

Fuzziness 举例

GET /my_index/my_type/_search

{

  "query": {

    "fuzzy": {

      "text": {

        "value": "surprize",

        "fuzziness": 2

      }

    }

  }

}

结果:

{

  "took": 27,

  "timed_out": false,

  "_shards": {

    "total": 5,

    "successful": 5,

    "failed": 0

  },

  "hits": {

    "total": 2,

    "max_score": 0.22585157,

    "hits": [

      {

        "_index": "my_index",

        "_type": "my_type",

        "_id": "1",

        "_score": 0.22585157,

        "_source": {

          "text": "Surprise me!"

        }

      },

      {

        "_index": "my_index",

        "_type": "my_type",

        "_id": "3",

        "_score": 0.1898702,

        "_source": {

          "text": "I wasn't surprised."

        }

      }

    ]

  }

}

 

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,而且他有一个范围,及时你写了一个很大的fuzziness,也会不纠正。

一般使用技巧

GET /my_index/my_type/_search

{

  "query": {

    "match": {

      "text": {

        "query": "SURPIZE ME",

        "fuzziness": "AUTO",

        "operator": "and"

      }

    }

  }

}

结果:

{

  "took": 8,

  "timed_out": false,

  "_shards": {

    "total": 5,

    "successful": 5,

    "failed": 0

  },

  "hits": {

    "total": 1,

    "max_score": 0.44248468,

    "hits": [

      {

        "_index": "my_index",

        "_type": "my_type",

        "_id": "1",

        "_score": 0.44248468,

        "_source": {

          "text": "Surprise me!"

        }

      }

    ]

  }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值