elk笔记14--ik分词器
1 ik 分词器的安装
- 下载分词器
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.2.1/elasticsearch-analysis-ik-7.2.1.zip - 安装分词器
bin/elasticsearch-plugin install file:///home/userName/elasticsearch-analysis-ik-7.2.1.zip - 依次重启节点,并通过 GET _cat/plugins 查看插件是否正确安装
2 ik 分词器基础知识
包括两种analyzer: ik_max_word和ik_smart;
ik_max_word: 分词较细,会将文本做最细粒度的拆分,尽可能穷举出所有的term ;
ik_max_word: 分词比较智能,做最粗粒度的拆分,避免过多的拆分;
两种分词器使用的最佳实践是:索引时用ik_max_word,在搜索时用ik_smart;即索引时最大化的将文章内容分词,搜索时更精确的搜索到想要的结果
3 ik 分词配置文件及自定义词库
ik的配置目录为: ~/soft/elk7.2.1/elasticsearch-7.2.1/plugins/ik/config
其内容如下:
~/soft/elk7.2.1/elasticsearch-7.2.1/plugins/ik/config$ ls
extra_main.dic extra_single_word_full.dic extra_stopword.dic main.dic quantifier.dic suffix.dic
extra_single_word.dic extra_single_word_low_freq.dic IKAnalyzer.cfg.xml preposition.dic stopword.dic surname.dic
主要配置介绍如下:
IKAnalyzer.cfg.xml:用来配置自定义词库
main.dic:ik原生内置的中文词库,总共有27万多条,只要是这些单词,都会被分在一起
quantifier.dic:放了一些单位相关的词
suffix.dic:放了一些后缀
surname.dic:中国的姓氏
stopword.dic:英文停用词
4 修改IK分词期源码来基于mysql热更新词库
- 配置web 服务器
在1台服务器上搭建apache或者nginx服务,用于提供自定义dict下载:
此处在 http://10.120.75.102:8660/dict/mydict.txt 上提供自定义mydict.txt,内容为蓝瘦香菇;
在properties中添加如下内容即可, 然后重启节点,可以看到自定义dict会被自动加载;
http://10.120.75.102:8660/dict/mydict.txt
GET _analyze
{
“analyzer”: “ik_max_word”,
“text”: “蓝瘦香菇”
}
默认情况下解析为:蓝|瘦|香菇
自定义dict后,解析为:蓝瘦香菇|香菇
GET _analyze
{
“analyzer”: “ik_smart”,
“text”: “蓝瘦香菇”
}
默认情况下解析为:蓝|瘦|香菇
自定义dict后,解析为:蓝瘦香菇
- 修改源码, 从mysql加载热更新词库
todo …
5 说明
- 参考文档
medcl/elasticsearch-analysis-ik中华石杉-Elasticsearch顶尖高手系列:高手进阶篇 - 软件说明
elk 7.2.1