IK分词器与自定义中文词库
内置分词器
ES总共提供了五种分词器,分别是:standard
,simple
,whitespace
,stop
,keyword
。
ES默认使用内置的标准分词器(standard),该分词器会根据根据单词进行分词,并将分词得到的单词转为小写形式,标准分词器不支持中文分词,会对中文分词以单个汉字为单位进行拆分。
简单分词器(simple),简单分词器也会根据单词进行分词,但是它不会将数字当成一个单词,并且像don't
,这种连词,它会简单的将它们分为两个词,即会根据'
进行拆分,它也会将分词得到的单词转为小写形式。
空格分词器(whitespace),就像字面上的意思所说的,它会按照空格进行拆分,它不会转换为小写形式。
stop分词器(stop),将类似于is
、a
、the
这种没有意义的单词除去,也会根据'
拆分,并且转换为小写形式。
keyword分词器(keyword),将整个文本作为一个关键词,不做任何拆分。
IK中文分词器
安装IK分词器
https://github.com/medcl/elasticsearch-analysis-ik
IK分词器提供了两种安装方式:
-
手动安装
-
通过ES提供的命令进行安装
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.3.0/elasticsearch-analysis-ik-master.zip
我们使用手动安装的方式
- 找到与ES版本匹配的IK版本并下载
- 将其解压到ES目录中plugins目录下的ik目录中
- 重启ES即可
使用IK分词器
IK分词器提供了两种分词策略,分别是ik_max_word
和ik_smart
。
-
ik_max_word: 会将文本做最细粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”,会穷尽各种可能的组合,适合 Term Query;
-
ik_smart: 会做最粗粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”,适合 Phrase 查询。
这里我们先使用ik_max_word
,发送请求进行分词验证:
POST http://192.168.95.130:9200/_analyze
// 请求体
{
"analyzer": "ik_max_word",
"text": "等到看你银色满际"
}
// 响应体
{
"tokens": [
{
"token": "等到",
"start_offset":<