Elasticsearch集成IK中文分词器

Developer

一、安装ik分词器

IK分词器 Github 地址:https://github.com/medcl/elas...

因为我安装的 Elasticsearch 是5.6.9版本,所以对应安装 elasticsearch-analysis-ik-5.6.9 版本

$ ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.6.9/elasticsearch-analysis-ik-5.6.9.zip

或者自己下载解压安装到your-es-root/plugins/下,然后重启elasticsearch

$ cp /mnt/hgfs/elasticsearch-analysis-ik-5.6.9/elasticsearch/ /opt/elasticsearch-5.6.9/plugins/ -r

启动过程中会打印日志loaded plugin [analysis-ik]

[2018-06-15T09:30:34,671][INFO ][o.e.p.PluginsService     ] [_JHOtaZ] loaded module [aggs-matrix-stats]
[2018-06-15T09:30:34,671][INFO ][o.e.p.PluginsService     ] [_JHOtaZ] loaded module [ingest-common]
[2018-06-15T09:30:34,671][INFO ][o.e.p.PluginsService     ] [_JHOtaZ] loaded module [lang-expression]
[2018-06-15T09:30:34,671][INFO ][o.e.p.PluginsService     ] [_JHOtaZ] loaded module [lang-groovy]
[2018-06-15T09:30:34,671][INFO ][o.e.p.PluginsService     ] [_JHOtaZ] loaded module [lang-mustache]
[2018-06-15T09:30:34,671][INFO ][o.e.p.PluginsService     ] [_JHOtaZ] loaded module [lang-painless]
[2018-06-15T09:30:34,671][INFO ][o.e.p.PluginsService     ] [_JHOtaZ] loaded module [parent-join]
[2018-06-15T09:30:34,671][INFO ][o.e.p.PluginsService     ] [_JHOtaZ] loaded module [percolator]
[2018-06-15T09:30:34,671][INFO ][o.e.p.PluginsService     ] [_JHOtaZ] loaded module [reindex]
[2018-06-15T09:30:34,672][INFO ][o.e.p.PluginsService     ] [_JHOtaZ] loaded module [transport-netty3]
[2018-06-15T09:30:34,672][INFO ][o.e.p.PluginsService     ] [_JHOtaZ] loaded module [transport-netty4]
[2018-06-15T09:30:34,672][INFO ][o.e.p.PluginsService     ] [_JHOtaZ] loaded plugin [analysis-ik] # 出现这行,则说明加载ik分词器插件成功
[2018-06-15T09:30:37,398][INFO ][o.e.d.DiscoveryModule    ] [_JHOtaZ] using discovery type [zen]
[2018-06-15T09:30:38,365][INFO ][o.e.n.Node               ] initialized
[2018-06-15T09:30:38,365][INFO ][o.e.n.Node               ] [_JHOtaZ] starting ...

重启

$ jps #查看pid
$ kill pid
$ ./bin/elasticsearch -d # 后台运行

二、使用

教程:http://keenwon.com/1404.html

elasticsearch内置分词器:

  1. standard (标准分词器):无脑的一个一个词(汉字)切分,所以适用范围广,但是精准度低。
  2. english (英文分词):对英文更加智能,可以识别单数负数,大小写,过滤stopwords(例如“the”这个词)等。
  3. chinese (中文分词):效果很差。

1. 验证分词效果 _analyze

ik的两种分词方式

  1. ik_max_word
    会将文本做最细粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”,会穷尽各种可能的组合;
  2. ik_smart
    会做最粗粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”。
# 新建test索引
$ curl -XPUT 'http://127.0.0.1:9200/test'

# 验证 ik_max_word 的分词效果
$ curl 'http://127.0.0.1:9200/test/_analyze?analyzer=ik_max_word&pretty=true' -d '{"text":"中华人民共和国"}'

# 验证 ik_smart 的分词效果
$ curl 'http://127.0.0.1:9200/test/_analyze?analyzer=ik_smart&pretty=true' -d '{"text":"中华人民共和国"}'

2. 待更新...

阅读 3.1k

全栈开发之路
全栈,从一个小渣渣开始做起 = - = 编程语言就是一个工具,学会如何用好它来解决实际问题是关键。 前端...

只要还在学习,人生就有无限的希望...

1.3k 声望
105 粉丝
0 条评论
你知道吗?

只要还在学习,人生就有无限的希望...

1.3k 声望
105 粉丝
宣传栏