elasticsearch participle - yaokun123/php-wiki GitHub Wiki
当安装完Elasticsearch之后,默认已经含有一个分词法,就是standard,这个分词法对英文的支持还可以,但是对中文的支持非常差劲
这是因为standard标准分词器,在处理中文的时候会把中文单词切分成一个一个的汉字,因此引入es之中文的分词器插件es-ik就能解决这个问题。
由于elasticsearch基于lucene,所以天然地就多了许多lucene上的中文分词的支持,比如 IK, Paoding, MMSEG4J等lucene中文分词原理上都能在elasticsearch上使用。
这个IK分词插件挺好用的,支持自定义分词,更重要的是支持热更新。
添加了IK插件意味着你可以使用ik_smart(最粗粒度的拆分)和ik_max_word(最细粒度的拆分)两种analyzer。
如果出现"failed to find global analyzer [ik_max_word]这样的错误说明ik还没有安装,可以进行下面步骤安装ik分词
1、进入github的网站搜索elasticsearch-analysis-ik或直接进入:https://github.com/medcl/elasticsearch-analysis-ik
2、查看README.md即可安装使用
我采用的是第二种安装方法:
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.3.2/elasticsearch-analysis-ik-6.3.2.zip
要注意安装ik的版本一定要和es的版本对应起来,不然会报版本不一致的错误
比如我的es版本是6.3.2,就采用上面的安装即可,如果是其他版本,修改版本号即可
注意:修改版本号的时候有两个地方。一个是v6.3.2一个是elasticsearch-analysis-ik-6.3.2.zip
ik_smart效果不是怎么好吧,推荐使用ik_max_word,不过也是根据自己的业务选择
到此ik分词器的安装已经告一段落,需要注意的是:
若你是单节点的es集群的话,则只需在一台部署es-ik。若比如像我这里的话,是3台,则需在三台都部署es-ik。
IK分词器作为一个开源软件,分词功能非常强大,一般场合的分词需求,他都可以完胜。但是对于专业术语和行业用词,ik有点不太智能,不过IK已经很棒了!下面我就介绍下如何手动添加热词文件的形式来拓展ik认知能力(分词索引)。
IKAnalyzer.cfg.xml可以位于
{conf}/analysis-ik/config/IKAnalyzer.cfg.xml(我的就在这里) 或
{plugins}/elasticsearch-analysis-ik-*/config/IKAnalyzer.cfg.xml\
我们可以先去ik插件的config文件下,已经有很多的dic文件。这就是ik自己的热词。
- 1.我们需要搜集我们需要的行业术语,dic文件。
- 2.我自己加了一个叫my.dic文件
- 3.我加了两个词,注意每个热词是需要换行的。
- 4.我现在把my.dic配置到内部。
vim IKAnalyzer.cfg.xml
内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict">my.dic</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords"></entry>
<!--用户可以在这里配置远程扩展字典 -->
<!-- <entry key="remote_ext_dict">words_location</entry> -->
<!--用户可以在这里配置远程扩展停止词字典-->
<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
也可以配置为一个目录(该目录下的所有文件都有效),如果使用相对路径的话该目录就要与IKAnalyzer.cfg.xml同级
配置项:
<entry key="ext_dict">my_dic/</entry>#这个斜线可写可不写
目录所在位置:/yaokun/elasticsearch-6.3.1/config/analysis-ik/my_dic
- 5.然后重启es。
下面就去测一下分词吧