ElasticSearch纠错和自动补全
-
建立映射
PUT /suggest { "mappings": { "properties": { "suggest": { "type": "completion" } } } }
先建立一个mapping,注意类型
"type": "completion"
-
添加一些数据
POST /suggest/_doc { "suggest":"数据" } POST /suggest/_doc { "suggest":"数据挖掘" } POST /suggest/_doc { "suggest":"数据挖掘分析" } POST /suggest/_doc { "suggest":"数据挖掘分析工具" }
为了方便说明添加一些简单的关键词
-
示例
#自动完成 POST /suggest/_search { "suggest": { "YOUR_SUGGESTION": { "prefix": "数据", "completion": { "field": "suggest", "size": 10 } } } }
自动完成:
prefix
前缀,默认匹配至少第一个字field
字段名size
返回数量参考:https://www.elastic.co/guide/en/elasticsearch/reference/7.10/search-suggesters.html#completion-suggester
#术语纠错 POST /suggest/_search { "suggest": { "YOUR_SUGGESTION": { "text": "数据哇掘", "term": { "suggest_mode": "always", "min_word_length": 2, "size": 10, "field": "suggest" } } } }
注意术语纠错的mapping字段不能是text,因为是中文所以进行不能分词不然"数据哇掘"会被分成"数据"、“哇”、"掘"会进行分别纠错导致的结果就没有出错,而不会对"数据哇掘"进行整体纠错。
min_word_length
表示文本长度最少是2,因为中文一个字没法纠错参考:https://www.elastic.co/guide/en/elasticsearch/reference/7.10/search-suggesters.html#term-suggester