白话Elasticsearch27-深度探秘搜索技术之误拼写时的fuzzy模糊搜索技术
文章目錄
- 概述
- 官方指導
- 例子
- 推薦寫法
概述
繼續(xù)跟中華石杉老師學習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 強烈推薦
例子
我們知道,搜索的時候,可能輸入的搜索文本會出現(xiàn)誤拼寫的情況。 舉個例子 如下兩個doc
doc1: hello world doc2: hello java我們本來是想搜索hello world ,結(jié)果手誤輸成了hallo world ?怎么辦呢 ,還能繼續(xù)搜索hello world嗎?
fuzzy搜索技術(shù) --> 自動將拼寫錯誤的搜索文本,進行糾正,糾正以后去嘗試匹配索引中的數(shù)據(jù)
實例 如下:
模擬一批數(shù)據(jù) 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."}查詢
GET /my_index/my_type/_search {"query": {"fuzzy": {"text": {"value": "surprize","fuzziness": 2}}} }返回結(jié)果:
,讓我們來分析下
surprize --> 拼寫錯誤 --> surprise --> s -> z
surprize --> surprise -> z -> s,糾正一個字母,就可以匹配上,所以在fuziness指定的2范圍內(nèi)
surprize --> surprised -> z -> s,末尾加個d,糾正了2次,也可以匹配上,在fuziness指定的2范圍內(nèi)
surprize --> surprising -> z -> s,去掉e,ing,3次,總共要5次,才可以匹配上,始終糾正不了
- fuzzy搜索以后,會自動嘗試將你的搜索文本進行糾錯,然后去跟文本進行匹配
- fuzziness,你的搜索文本最多可以糾正幾個字母去跟你的數(shù)據(jù)進行匹配,默認如果不設(shè)置,就是2
推薦寫法
一般不用上面的那種寫法,常用寫法如下:
GET /my_index/my_type/_search {"query": {"match": {"text": {"query": "SURPIZE ME","fuzziness": "AUTO","operator": "and"}}} }返回結(jié)果:
總結(jié)
以上是生活随笔為你收集整理的白话Elasticsearch27-深度探秘搜索技术之误拼写时的fuzzy模糊搜索技术的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 白话Elasticsearch26-深度
- 下一篇: 白话Elasticsearch28-IK