前面我们已经说了,elasticsearch要想实现准确点的检索,就需要分词精确。elasticsearch本身自带的分词器对中文的支持不太友好,所以才会出现我们上次试验的结果,搜索李白
会出现白居易
。
1. 自带分词插件的分词效果
![](https://img.haomeiwen.com/i22972070/98e30e2caf5f9f41.png)
![](https://img.haomeiwen.com/i22972070/17155985e047678d.png)
可以看出,这个自带分词器傻瓜式的拆成1个个。它不认识“雷布斯”,它只认识“雷”、“布”、“斯”。
2. 安装分词器
2.1 ik分词器
中文分词器一般用ik分词器
。
ik分词器的下载地址。下载和Elasticsearch版本对应的。如果不能下了,可以去github看一下,是不是地址换了。
下载完成以后,将文件上传到我们上次docker映射的plugins目录中。
注意:3个节点都要上传并处理。
# 解压到ik目录
cd /opt/soft/elasticsearch/es01/plugins
unzip elasticsearch-analysis-ik-8.14.3.zip -d ik
# 删除压缩包
rm elasticsearch-analysis-ik-8.14.3.zip
2.2 拼音分词器
还有一个拼音分词器,pinyin分词器把输入的汉字拆分成了单个拼音、拼音组合、拼音缩写。
下载地址,和ik是一个作者出的,参照ik步骤安装到plugins目录下。
安装完2个分词器以后,重启3个节点。进容器可以在命令行查看:
![](https://img.haomeiwen.com/i22972070/5fc3f4d0a4745fc9.png)
3. 简单使用效果
IK 分词器有两种模式:ik_max_word
和ik_smart
。
-
ik_smart
: 比自带的标准分词器稍微聪明点,拆分粒度会粗一些。 -
ik_max_word
: 会做细粒度的拆分,尽量找出各种可能的组合,拆分出更多可能性的词。
我们看一下效果:
ik1
ik2
ik3
ik4
感觉ik_max_word
给出的结果中,有更多符合心意的。当然词条多了,倒排索引列表就大,所需硬件资源就更多。根据实际情况选择。
我们看一下拼音分词器的:
![](https://img.haomeiwen.com/i22972070/c28ea05bc69a26bc.png)
感觉效果并不是太好。
网友评论