使用 man ascii 来查看 ASCII 表。

中文+拼音+同音字 都存在的情况怎么实现搜索?

Elasticsearch | 作者 dlliwei | 发布于2021年03月25日 | 阅读数:2131

例如:
正确字段: “上海千汇一村”
搜索: “千hui”, “千惠” 都可以搜索到
setting和mapping怎么写可以实现呢?
说明: 使用ES 5.5.0, 并且已经安装了ik 和pinyin 插件
已邀请:

- Elasticsearch,php

赞同来自: dlliwei

mappings 里面的字段用这样的方式.
 
"title" : {
"analyzer" : "by_max_word",
"type" : "text",
"fields" : {
"pinyin" : {
"search_analyzer" : "by_max_word_pinyin",
"analyzer" : "by_max_word_pinyin",
"type" : "text"
},
"word" : {
"search_analyzer" : "no_synonym_standard",
"analyzer" : "no_synonym_standard",
"type" : "text"
}
}
}

title本身正常根据词语进行分词

fields 里面增加拼音的分词和单字的分词
 
搜索的时候这样。
GET 索引名称或别名/_search
{
"query": {
"multi_match": {
"query": "关键词",
"fields": [
"title",
"title.pinyin",
"title.word"
]
}
},
"size": 10
}

要回复问题请先登录注册