Elasticsearch中文分词
1、ELasticsearch自带的分词器
Elasticsearch内置了很多分词器(analyzers),例如standard(标准分词器)、english(英文分词)和chinese(中文分词)。其中standard就是无脑的一个一个词(汉字)切分,所以适用范围广,但是精准度低。english对英文更加智能,可以识别单数负数,大小写,过滤stopwords(例如“the”这个词)等;chinese效果很差。
使用es 自带的分词standard,比如:世界如此之大,会分成世、界、如、此、之、大,这种分词把每个汉字都独立分开来了,这对中文分词就没有意义了。而我们实际上想得到一些词组。
2、第三方中文分词器
有很多不错的第三方中文分词器,可以很好地和ES结合起来使用。在ES中,每种分词器(包括内置的、第三方的)都会有个名称。如果不给出analyzer对应的名称,默认为standard。比较常用的中文分词器是中科院ICTCLAS的smartcn和IKAnanlyzer分词器。在本文中,我们介绍IKAnanlyzer分词器(下面简称ik)在windows下的使用。
1)下载地址
注意:ik版本一定要与es的版本一致,我这里选择的ik6.0.0版本
2)安装
elasticsearch-plugin.bat install
file:///D:/hadoop/elasticsearch-analysis-ik-6.0.0.zip
注意:install后面一定要跟ik压缩包所在的路径
3)安装完毕后
安装完成后,在ES的安装目录下的plugins目录下会多了一个analysis-ik目录(内容是ik的zip包解压后根目录下的所有文件,一共是5个jar文件和1个properties配置文件)
另外ES的安装目录下的config目录下多了一个analysis-ik目录(内容是ik的zip包解压后根目录下的config目录下所有文件,用于放置ik的自定义词库)
3、ik中文分词器的使用
ik提供了两个分词器,分别是ik_max_word 和ik_smart
1)ik_max_word
会将文本做最细粒度的拆分,比如会将“世界如此之大”拆分为世界、如此之、如此、之大。
2)ik_smart
会将文本做最粗粒度的拆分,比如会将“世界如此之大”拆分为世界、如此、之大。
4、中文分词在搜索中的使用
1)创建索引
PUT /index_ik_s
2)设置分析器
3)搜索测试
以上是针对分析器ik_smart做的测试,按照上面的步骤再自行对ik_max_word和standard进行测试。就不一 一贴图了,测试完,得出以下结论
结论:
1)ik_smart既能满足英文的要求,又更智能更轻量,占用存储最小,所以首推ik_smart
2)standard对英语支持是最好的,但是对中文是简单暴力将每个字都创建一个反向索引,浪费存储空间而且效果很差
3)ik_max_word比ik_smart对中文的支持更全面,但是存储上的开销实在太大,不建议使用
参考链接:
https://www.jianshu.com/p/bb89ad7a7f7d
https://blog.csdn.net/Barbarousgrowth_yp/article/details/80242811