分词器的安装
ElasticSearch是自带分词器的,但是自带的分词器一般就只能对英文分词,对英文的分词只要识别空格就好了,还是很好做的(ES的这个分词器和Lucene的分词器很像,是不是直接使用Lucene的就不知道),自带的分词器对于中文就只能分成一个字一个字,这个显然是不能满足在开发中的要求的。
先看看自带的分词器的分词效果
POST /_analyze
{
"analyzer":"standard",
"text":"中华人民共和国国歌"
}
效果可以看到中文是一个词一个词的
IK分词器的安装
安装过程
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.5.0/elasticsearch-analysis-ik-5.5.0.zip
# 移动到目录 /usr/soft/es/elasticsearch-5.5.0/plugins/elasticsearch
unzip elasticsearch-analysis-ik-5.5.0.zip
# 重新启动Es 关键点是注意下载分词器版本一定要和es 版本一致,不然会报错
IK中有两种分词器,一种是ik_max_word另一种是ik_smart,分别会最大粒度的分词和最小粒度的分词:
POST /_analyze
{
"analyzer":"ik_smart",
"text":"中华人民共和国国歌"
}
可以看到效果还是比较好的 响应结果为:
{
"tokens": [
{
"token": "中华人民共和国",
"start_offset": 0,
"end_offset": 7,
"type": "CN_WORD",
"position": 0
},
{
"token": "国歌",
"start_offset": 7,
"end_offset": 9,
"type": "CN_WORD",
"position": 1
}
]
}
拼音分词器的安装
wget https://github.com/medcl/elasticsearch-analysis-pinyin/releases/download/v5.5.0/elasticsearch-analysis-pinyin-5.5.0.zip
/plugins/pinyin ik 去除掉 elasticsearch 文件夹
# 测试
POST /_analyze
{
"analyzer":"pinyin",
"text":"中华人民共和国国歌"
}
手动加分词
进入 /usr/soft/es/elasticsearch-6.4.3/plugins/ik/config 目录
vim customer/new_word.dic -->先创建文件夹