1. 程式人生 > >28_ElasticSearch誤拼寫時的fuzzy模糊搜尋技術

28_ElasticSearch誤拼寫時的fuzzy模糊搜尋技術

ElasticSearch誤拼寫時的fuzzy模糊搜尋技術

更多幹貨

一、概述

  • fuzzy搜尋技術
  • 搜尋的時候,可能輸入的搜尋文字會出現誤拼寫的情況
  • 自動將拼寫錯誤的搜尋文字,進行糾正糾正以後去嘗試匹配索引中的資料
  • 糾正在一定的範圍內如果差別大無法搜尋出來

二、例子說明

搜尋的時候,可能輸入的搜尋文字會出現誤拼寫的情況

  • 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."}

fuzzy 查詢,並設定糾正字數為2

GET/my_index/my_type/_search 
{
  "query": {
    "fuzzy": {
      "text": {
        "value":"surprize",
        "fuzziness":2
      }
    }
  }
}
  • 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"
      }
    }
  }
}

相關文章