一、什麼是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,即自動匹配模糊匹配程度。
原創文章,作者:YRMW,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/134725.html