进阶-第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!"

        }

      }

    ]

  }

}

 

猜你喜欢

转载自blog.csdn.net/qq_35524586/article/details/88543014