IK分词提供的两个分词器,并不支持一些新的词汇,有时候也不能满足实际业务需要,这时候,我们可以定义自定义词库来完成目标。
文章目录
- 一、静态web搭建
- 1. 安装nginx
- 2. 创建es目录
- 3. 创建分词文件
- 4. 存放静态
- 5. 验证
- 二、配置远程分词
- 2.1. 切换用户
- 2.2. 配置分词
- 2.3. 远程分词
- 2.4. 重启es
- 2.5. 验证分词
- 三、热更新词库
- 3.1. 自定义分词
- 3.2. 分词结果
- 3.3. 添加分词库
- 3.4. 日志监控
- 3.5. 分词验证
一、静态web搭建
1. 安装nginx
nginx 1.9.9 Linux 环境安装
2. 创建es目录
在nginx新建一个文件夹es,将ik所需要使用的资源放在里面,用于存放新建的词库
cd /usr/local/nginx
mkdir es
3. 创建分词文件
在es目录下,新建一个文件new_word_fenci.dic,将需要分词的内容放在该文件中
cd es
vim new_word_fenci.dic
添加内容:
凯悦
4. 存放静态
将es移动到html目录下,因为nginx默认访问的是html目录
mv es ./html/
5. 验证
http://192.168.92.128/es/new_word_fenci.dic
如图:
二、配置远程分词
2.1. 切换用户
su - es
2.2. 配置分词
编辑IKAnalyzer
cd /app/elasticsearch-7.15.2/config/analysis-ik
vim IKAnalyzer.cfg.xml
2.3. 远程分词
原配置
调整后配置
<?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"></entry><!--用户可以在这里配置自己的扩展停止词字典--><entry key="ext_stopwords"></entry><!--用户可以在这里配置远程扩展字典 --><entry key="remote_ext_dict">http://192.168.92.128:80/es/new_word_fenci.dic</entry><!--用户可以在这里配置远程扩展停止词字典--><!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
2.4. 重启es
说明:kibana需要一直处于启动
2.5. 验证分词
# 查阅凯悦分词
GET /shop/_analyze
{"analyzer": "ik_smart","text": "凯悦"
}GET /shop/_analyze
{"analyzer": "ik_max_word","text": "凯悦"
}
三、热更新词库
3.1. 自定义分词
# 查阅凯悦分词
GET /shop/_analyze
{"analyzer": "ik_smart","text": "我是专家"
}GET /shop/_analyze
{"analyzer": "ik_max_word","text": "我是专家"
}
3.2. 分词结果
{"tokens" : [{"token" : "我","start_offset" : 0,"end_offset" : 1,"type" : "CN_CHAR","position" : 0},{"token" : "是","start_offset" : 1,"end_offset" : 2,"type" : "CN_CHAR","position" : 1},{"token" : "专家","start_offset" : 2,"end_offset" : 4,"type" : "CN_WORD","position" : 2}]
}
3.3. 添加分词库
把我是专家添加分词库
cd /usr/local/nginx/html/es/
vim new_word_fenci.dic
添加我是专家到分词库:
我是专家
一个分词为一行
3.4. 日志监控
[2021-11-21T16:26:35,785][INFO ][o.w.a.d.Dictionary ] [es] start to reload ik dict.
[2021-11-21T16:26:35,787][INFO ][o.w.a.d.Dictionary ] [es] try load config from /app/elasticsearch-7.15.2/config/analysis-ik/IKAnalyzer.cfg.xml
[2021-11-21T16:26:35,938][INFO ][o.w.a.d.Dictionary ] [es] [Dict Loading] http://192.168.92.128:80/es/new_word_fenci.dic
[2021-11-21T16:26:35,946][INFO ][o.w.a.d.Dictionary ] [es] 凯悦
[2021-11-21T16:26:35,947][INFO ][o.w.a.d.Dictionary ] [es] 我是专家
[2021-11-21T16:26:35,947][INFO ][o.w.a.d.Dictionary ] [es] reload ik dict finished.
3.5. 分词验证
# 查阅凯悦分词
GET /shop/_analyze
{"analyzer": "ik_smart","text": "我是专家"
}GET /shop/_analyze
{"analyzer": "ik_max_word","text": "我是专家"
}