### 中文分词器 在ES中支持中文分词器非常多 如 **smartCN**、**IK** 等,推荐的就是 `IK分词器`。 #### 安装IK 开源分词器 Ik 的github:https://github.com/medcl/elasticsearch-analysis-ik - `注意` IK分词器的版本要你安装ES的版本一致 - `注意` Docker 容器运行 ES 安装插件目录为 **/usr/share/elasticsearch/plugins** ```markdown # 1. 下载对应版本 - [es@linux ~]$ wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.14.0/elasticsearch-analysis-ik-7.14.0.zip # 2. 解压 - [es@linux ~]$ unzip elasticsearch-analysis-ik-6.2.4.zip #先使用yum install -y unzip # 3. 移动到es安装目录的plugins目录中 - [es@linux ~]$ ls elasticsearch-6.2.4/plugins/ [es@linux ~]$ mv elasticsearch elasticsearch-6.2.4/plugins/ [es@linux ~]$ ls elasticsearch-6.2.4/plugins/ elasticsearch [es@linux ~]$ ls elasticsearch-6.2.4/plugins/elasticsearch/ commons-codec-1.9.jar config httpclient-4.5.2.jar plugin-descriptor.properties commons-logging-1.2.jar elasticsearch-analysis-ik-6.2.4.jar httpcore-4.4.4.jar # 4. 重启es生效 # 5. 本地安装ik配置目录为 - es安装目录中/plugins/analysis-ik/config/IKAnalyzer.cfg.xml ``` #### IK使用 IK有两种颗粒度的拆分: - `ik_smart`: 会做最粗粒度的拆分 - `ik_max_word`: 会将文本做最细粒度的拆分 ```http POST /_analyze { "analyzer": "ik_smart", "text": "中华人民共和国国歌" } ``` ![](https://img.kancloud.cn/57/5d/575df6d90c6ce49dc76039a78bf9b0d0_689x262.png) ```http POST /_analyze { "analyzer": "ik_max_word", "text": "中华人民" } ``` ![](https://img.kancloud.cn/69/87/6987b104b75984e7384ca787ec882142_750x695.png) #### 扩展词、停用词配置 IK支持自定义`扩展词典`和`停用词典` - **`扩展词典`**就是有些词并不是关键词,但是也希望被ES用来作为检索的关键词,可以将这些词加入扩展词典。 - **`停用词典`**就是有些词是关键词,但是出于业务场景不想使用这些关键词被检索到,可以将这些词放入停用词典。 定义扩展词典和停用词典可以修改IK分词器中`config`目录中`IKAnalyzer.cfg.xml`这个文件。 ```markdown 1. 修改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">ext_dict.dic</entry> <!--用户可以在这里配置自己的扩展停止词字典--> <entry key="ext_stopwords">ext_stopword.dic</entry> </properties> 2. 在ik分词器目录下config目录中创建ext_dict.dic文件 编码一定要为UTF-8才能生效 vim ext_dict.dic 加入扩展词即可 3. 在ik分词器目录下config目录中创建ext_stopword.dic文件 vim ext_stopword.dic 加入停用词即可 4.重启es生效 ``` > `注意:` **词典的编码必须为UTF-8,否则无法生效!** ----