项目简介
本项目是基于Elasticsearch和IK分词器构建的热更新中文分词系统。通过对IK分词器源码进行修改,达成了从MySQL数据库自动加载新词库的功能,且支持Elasticsearch集群热更新,无需重启节点就能实时加载新词。
项目的主要特性和功能
- 热更新功能:可从MySQL数据库自动加载新词库,无需重启Elasticsearch节点即可实时加载新词。
- 分布式支持:适用于Elasticsearch分布式集群,能支持数百个节点的词库热更新。
- 多种分词模式:提供
ik_smart
和ik_max_word
两种分词模式,满足不同搜索需求。 - 自定义词典:支持用户自定义扩展词典和停用词词典,可通过HTTP接口进行热更新。
- 高效分词:基于IK分词器,具备高效的中文分词能力,支持智能分词和最大词库分词。
安装使用步骤
1. 下载源码
bash
cd elasticsearch-analysis-ik
git checkout tags/v7.2.0
2. 修改源码
修改IK分词器的源码以支持从MySQL数据库中自动加载新词库:
- 修改Dictionary
类,添加从MySQL加载词库的逻辑。
- 创建HotDictReloadThread
类,实现定时从MySQL加载新词库的功能。
3. 打包代码
使用Maven打包修改后的代码:
bash
mvn clean
mvn compile
mvn package
打包完成后,在target/releases
目录下会生成elasticsearch-analysis-ik-7.2.0.zip
文件。
4. 解压缩并配置
将生成的elasticsearch-analysis-ik-7.2.0.zip
文件解压缩到Elasticsearch的插件目录下,并配置MySQL连接信息。
5. 重启Elasticsearch
重启Elasticsearch节点,观察日志,确认新词库已成功加载。
6. 在MySQL中添加词库与停用词
在MySQL数据库中添加新的词库和停用词,系统会自动加载这些新词。
7. 分词实验
使用Elasticsearch的_analyze
接口进行分词实验,验证热更新功能是否生效。
bash
curl -XPOST http://localhost:9200/index/_analyze -H 'Content-Type:application/json' -d'
{
"text":"中华人民共和国MN",
"tokenizer": "ik_smart"
}'
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】