elk笔记14--ik分词器

时间:2022-10-19 17:58:03


elk笔记14--ik分词器

1 ik 分词器的安装

  1. 下载分词器
    wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.2.1/elasticsearch-analysis-ik-7.2.1.zip
  2. 安装分词器
    bin/elasticsearch-plugin install file:///home/userName/elasticsearch-analysis-ik-7.2.1.zip
  3. 依次重启节点,并通过 GET _cat/plugins 查看插件是否正确安装

2 ik 分词器基础知识

包括两种analyzer: ik_max_word和ik_smart;
ik_max_word: 分词较细,会将文本做最细粒度的拆分,尽可能穷举出所有的term ;
ik_max_word: 分词比较智能,做最粗粒度的拆分,避免过多的拆分;

两种分词器使用的最佳实践是:索引时用ik_max_word,在搜索时用ik_smart;即索引时最大化的将文章内容分词,搜索时更精确的搜索到想要的结果

GET _analyze
{
"text": "我们都是中国人",
"analyzer": "ik_max_word"
}
输出:我们 都是 中国人 中国 国人

GET _analyze
{
"text": "我们都是中国人",
"analyzer": "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热更新词库

  1. 配置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​
[2020-08-30T18:37:49,701][INFO ][o.w.a.d.Monitor          ] [node-1] [Dict Loading] http://10.120.75.102:8660/dict/mydict.txt
[2020-08-30T18:37:49,710][INFO ][o.w.a.d.Monitor ] [node-1] 蓝瘦香菇
[2020-08-30T18:37:49,711][INFO ][o.w.a.d.Monitor ] [node-1] 重新加载词典完毕...

GET _analyze
{
“analyzer”: “ik_max_word”,
“text”: “蓝瘦香菇”
}
默认情况下解析为:蓝|瘦|香菇
自定义dict后,解析为:蓝瘦香菇|香菇
GET _analyze
{
“analyzer”: “ik_smart”,
“text”: “蓝瘦香菇”
}
默认情况下解析为:蓝|瘦|香菇
自定义dict后,解析为:蓝瘦香菇

  1. 修改源码, 从mysql加载热更新词库
    todo …

5 说明

  1. 参考文档
    ​​​medcl/elasticsearch-analysis-ik​​​​中华石杉-Elasticsearch顶尖高手系列:高手进阶篇​
  2. 软件说明
    elk 7.2.1