Elasticsearch中文分词

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)下载地址

https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.0.0/elasticsearch-analysis-ik-6.0.0.zip

注意: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

原文地址:https://www.cnblogs.com/hld123/p/13230617.html