Elasticsearch7.15.2 ik中文分词器 定制化分词器之扩展词库(远程)_nginx


Elasticsearch7.15.2 ik中文分词器 定制化分词器之扩展词库(远程)_analyzer_02

IK分词提供的两个分词器,并不支持一些新的词汇,有时候也不能满足实际业务需要,这时候,我们可以定义自定义词库来完成目标。

文章目录

一、静态web搭建
1. 安装nginx

​nginx 1.9.9 Linux 环境安装​

2. 创建es目录

在nginx新建一个文件夹es,将ik所需要使用的资源放在里面,用于存放新建的词库

cd /usr/local/nginx
mkdir

Elasticsearch7.15.2 ik中文分词器 定制化分词器之扩展词库(远程)_nginx_03

3. 创建分词文件

在es目录下,新建一个文件new_word_fenci.dic,将需要分词的内容放在该文件中

cd es
vim

添加内容:

凯悦
4. 存放静态

将es移动到html目录下,因为nginx默认访问的是html目录

mv
5. 验证
http://192.168.92.128/es/new_word_fenci.dic

如图:

Elasticsearch7.15.2 ik中文分词器 定制化分词器之扩展词库(远程)_nginx_04

二、配置远程分词
2.1. 切换用户
su
2.2. 配置分词

编辑IKAnalyzer

cd /app/elasticsearch-7.15.2/config/analysis-ik
vim
2.3. 远程分词

原配置

Elasticsearch7.15.2 ik中文分词器 定制化分词器之扩展词库(远程)_ik远程_05


调整后配置

Elasticsearch7.15.2 ik中文分词器 定制化分词器之扩展词库(远程)_nginx_06

<?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

Elasticsearch7.15.2 ik中文分词器 定制化分词器之扩展词库(远程)_html_07

说明:kibana需要一直处于启动

2.5. 验证分词
# 查阅凯悦分词
GET /shop/_analyze
{
"analyzer": "ik_smart",
"text": "凯悦"
}

GET /shop/_analyze
{
"analyzer": "ik_max_word",
"text": "凯悦"
}

Elasticsearch7.15.2 ik中文分词器 定制化分词器之扩展词库(远程)_html_08

三、热更新词库
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

添加我是专家到分词库:

我是专家

Elasticsearch7.15.2 ik中文分词器 定制化分词器之扩展词库(远程)_nginx_09

一个分词为一行

3.4. 日志监控

Elasticsearch7.15.2 ik中文分词器 定制化分词器之扩展词库(远程)_html_10

[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]
3.5. 分词验证
# 查阅凯悦分词
GET /shop/_analyze
{
"analyzer": "ik_smart",
"text": "我是专家"
}

GET /shop/_analyze
{
"analyzer": "ik_max_word",
"text": "我是专家"
}

Elasticsearch7.15.2 ik中文分词器 定制化分词器之扩展词库(远程)_nginx_11