和我一起打造个简单搜索之IK分词以及拼音分词
本文最后更新于:2021年6月15日 晚上
elasticsearch 官方默认的分词插件,对中文分词效果不理想,它是把中文词语分成了一个一个的汉字。所以我们引入 es 插件 es-ik。同时为了提升用户体验,引入 es-pinyin 插件。本文介绍这两个 es 插件的安装。
环境
本文以及后续 es 系列文章都基于 5.5.3 这个版本的 elasticsearch ,这个版本比较稳定,可以用于生产环境。
ik 分词器 和 pinyin 分词器在 github 仓库可以找到,注意版本与 elasticsearch 的版本需要对应,本文使用 5.5.3 版本
如果 elasticsearch 与我的版本不同,可以去官方 github 对应的仓库查看对应版本的 ik 以及 pinyin 分词器。
系列文章
- 一、和我一起打造个简单搜索之ElasticSearch集群搭建
- 二、和我一起打造个简单搜索之ElasticSearch入门
- 三、和我一起打造个简单搜索之IK分词以及拼音分词
- 四、和我一起打造个简单搜索之Logstash实时同步建立索引
- 五、和我一起打造个简单搜索之SpringDataElasticSearch入门
- 六、和我一起打造个简单搜索之SpringDataElasticSearch关键词高亮
- …
安装 ik 分词器
前文中,我们已经安装了 elasticsearch,我们在其基础上安装分词器
1 |
|
验证 ik 分词器是否生效
打开 Restlet Client 或者 postman 工具
GET http://192.168.199.192:9200/_analyze?analyzer=ik_smart&text="中华人民共和国国歌"
移除名为 ik 的analyzer和tokenizer,请分别使用 ik_smart 和 ik_max_word
ik_max_word: 会将文本做最细粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”,会穷尽各种可能的组合;
ik_smart: 会做最粗粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”。
这里 analyzer 可以指定分词类型,发送请求返回结果:
1 |
|
我这里指定的 analyzer 为 ik_smart,即粗粒度分词,可以看到 ik 分词器已经生效了。接下来继续安装 pinyin 分词器。
安装 pinyin 分词器
1 |
|
验证 pinyin 分词器是否生效
打开 Restlet Client 或者 postman 工具
GET http://192.168.199.192:9200/_analyze?analyzer=pinyin&text="李小龙"
这里 analyzer 可以指定分词为 pinyin,发送请求返回结果:
1 |
|
观察结果,说明 pinyin 分词器也已经生效了。
集群其他节点分词器安装
现在只对 master 进行了安装,其他 slave 也需要安装,这里可以通过拷贝的方式直接来完成安装了。
1 |
|
如果其他节点在不同服务器上,通过 scp 命令拷贝即可。
有疑问?
欢迎来信,给我写信
参考
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!