31_ElasticSearch 修改IK分词器源码来基于mysql热更新词库
31_ElasticSearch 修改IK分词器源码来基于mysql热更新词库
更多干货
- 分布式实战(干货)
- spring cloud 实战(干货)
- mybatis 实战(干货)
- spring boot 实战(干货)
- React 入门实战(干货)
- 构建中小型互联网企业架构(干货)
- python 学习持续更新
- ElasticSearch 笔记
一、代码地址
已经修改过的支持定期从数据库中提取新词库,来实现热更新。代码:
https://github.com/csy512889371/learndemo/tree/master/elasticsearch-analysis-ik-5.2.0
二、概述
每次都是在es的扩展词典中,手动添加新词语,很坑
- 1、每次添加完,都要重启es才能生效,非常麻烦
- 2、es是分布式的,可能有数百个节点,你不能每次都一个一个节点上面去修改
es不停机,直接我们在外部某个地方添加新的词语,es中立即热加载到这些新词语
热更新的方案
- 1、修改ik分词器源码,然后手动支持从mysql中每隔一定时间,自动加载新的词库
- 2、基于ik分词器原生支持的热更新方案,部署一个web服务器,提供一个http接口,通过modified和tag两个http响应头,来提供词语的热更新
用第一种方案,第二种,ik git社区官方都不建议采用,觉得不太稳定
1、下载源码
https://github.com/medcl/elasticsearch-analysis-ik/tree/v5.2.0
ik分词器,是个标准的java maven工程,直接导入eclipse就可以看到源码
2、修改源码
- Dictionary类,169行:Dictionary单例类的初始化方法,在这里需要创建一个我们自定义的线程,并且启动它
- HotDictReloadThread类:就是死循环,不断调用Dictionary.getSingleton().reLoadMainDict(),去重新加载词典
- Dictionary类,389行:this.loadMySQLExtDict();
- Dictionary类,683行:this.loadMySQLStopwordDict();
3、mvn package打包代码
target\releases\elasticsearch-analysis-ik-5.2.0.zip
4、解压缩ik压缩包
将mysql驱动jar,放入ik的目录下
5、修改jdbc相关配置
6、重启es
观察日志,日志中就会显示我们打印的那些东西,比如加载了什么配置,加载了什么词语,什么停用词
7、在mysql中添加词库与停用词
8、分词实验,验证热更新生效
相关文章
ElasticSearch 笔记
1_ElasticSearch使用term filter来搜索数据
2_ElasticSearch filter执行原理 bitset机制与caching机制
3_ElasticSearch 基于bool组合多个filter条件来搜索数据
4_ElasticSearch 使用terms搜索多个值
5_ElasticSearch 基于range filter来进行范围过滤
6_ElasticSearch 控制全文检索结果的精准度
7_ElasticSearch term+bool实现的multiword搜索原理
8_基于boost的搜索条件权重控制
9_ElasticSearch 多shard场景下relevance score不准确
10_ElasticSearch dis_max实现best fields策略进行多字段搜索
11_ElasticSearch 基于tie_breaker参数优化dis_max搜索效果
12_ElasticSearch multi_match语法实现dis_max+tie_breaker
13_ElasticSearch multi_match+most fiels策略进行multi-field搜索
14_ElasticSearch 使用most_fields策略进行cross-fields search
15_ElasticSearch copy_to定制组合field进行cross-fields搜索
16_ElasticSearch 使用原生cross-fiels 查询
17_ElasticSearch phrase matching搜索
18_ElasticSearch 基于slop参数实现近似匹配
19_ElasticSearch 使用match和近似匹配实现召回率与精准度的平衡
20_ElasticSearch rescoring机制优化近似匹配搜索的性能
21_ElasticSearch 前缀搜索、通配符搜索、正则搜索
22_ElasticSearch 搜索推荐match_phrase_prefix实现search-time
23_ElsaticSearch 搜索推荐ngram分词机制实现index-time更多干货
24_ElasticSearch TF&IDF算法以及向量空间模型
25_ElasticSearch 揭秘lucene的相关度分数算法
26_ElasticSearch 四种常见的相关度分数优化方法
27_ElasticSearch用function_score自定义相关度分数算法
28_ElasticSearch误拼写时的fuzzy模糊搜索技术
29_ElasticSearchIK中文分词器的安装和使用
30_ElasticSearch IK分词器配置文件 以及自定义词库
ElasticSearchIK中文分词器的安装和使用
日志管理ELK
31_ElasticSearch 修改IK分词器源码来基于mysql热更新词库相关推荐
- ik mysql热加载分词_Elasticsearch 之(25)重写IK分词器源码来基于mysql热更新词库...
热更新在上一节< IK分词器配置文件讲解以及自定义词库>自定义词库,每次都是在es的扩展词典中,手动添加新词语,很坑 (1)每次添加完,都要重启es才能生效,非常麻烦 (2)es是分布式的 ...
- es ik分词热更新MySQL,ElasticSearch(25)- 改IK分词器源码来基于mysql热更新词库
代码地址 已经修改过的支持定期从数据库中提取新词库,来实现热更新.代码: https://github.com/csy512889371/learndemo/tree/master/elasticse ...
- Elasticsearch7.15.2 修改IK分词器源码实现基于MySql8的词库热更新
文章目录 一.源码分析 1. 默认热更新 2. 热更新分析 3. 方法分析 二.词库热更新 2.1. 导入依赖 2.2. 数据库 2.3. JDBC 配置 2.4. 打包配置 2.5. 权限策略 2. ...
- es修改IK分词器源码 mysql热词动态更新(报错解决x3)
最近在公司遇到的一个问题,给elasticsearch配置ik热部署mysql词库. 我是参照下面这个博客来做的 https://www.cnblogs.com/xiaoxiaoliu/p/11218 ...
- 【转载保存】修改IK分词器源码实现动态加载词典
链接:http://www.gongstring.com/portal/article/index/id/59.html 当前IKAnalyzer从发布最后一个版本后就一直没有再更新,使用过程中,经常 ...
- 庖丁解牛分词器---源码下载---错误问题解决
庖丁解牛分词器---源码下载 地址:http://download.csdn.net/detail/u014737138/9349677 由于国内的环境限制,访问不了Google ,同时网上那些下载 ...
- Elasticsearch之中文分词器插件es-ik的自定义热更新词库
1: 部署 http 服务 在这使用 tomcat7 作为 web 容器, 先下载一个 tomcat7, 然后上传到某一台服务器上(192.168.80.10). 再执行以下命令 tar -zxvf ...
- 六Elasticsearch之中文分词器插件es-ik的热更新词库
参考:http://www.mamicode.com/info-detail-1705113.html 先声明,热更新词库,需要用到,web项目和Tomcat.不会的,请移步 Eclipse下Mave ...
- solr两种安装、ik分词器设置、DIH导入mysql数据
文章目录 solr 安装(内置方式) solr 安装(tomcat方式) IK中文分词器设置 solr数据操作 使用dataimport导入数据库数据 solr 安装(内置方式) 安装包 官网下载安装 ...
最新文章
- CSS-3 Animation 的使用
- java中判断字段真实长度(中文2个字符,英文1个字符)的方法
- CUDA的global内存访问的问题
- Xcode中捕获iphone/ipad/ipod手机摄像头的实时视频数据
- 卓有成效的管理者--总结
- sklearn svm如何选择核函数_文本挖掘篇|利用SVM进行短文本分类
- 用java输出真值表离散数学_离散数学 第一章 命题逻辑 1-4真值表与等价公式
- animation 先执行一次 在持续执行_FANUC机器人:先执行指令功能/后执行指令功能介绍与使用方法...
- Oracle自增ID实现
- Java面向对象编程 实验报告
- Intellij idea破解2017
- 微信号码检测工具的使用成功案例(一)
- 聚类——模糊c均值聚类
- 客户分析表格怎么做 财务合并报表培训 5分钟看懂财务报表
- 情感+事业,强者必学的定律
- go mod 使用方法
- 【算法】h0145. 会议安排(贪心算法)
- Python爬虫 | 2008-2018年各省专利统计数据
- Windows exe文件如何提取图标
- Python eval()和exec()函数详解
热门文章
- word中常用快捷键
- MPLS 配置远端LDP会话实验 详解
- 《Learn python3 the hard way》ex14 Prompting and Passing
- 笔记本 原因代码: 0x500ff 关机类型: 关闭电源_图吧垃圾佬关于笔记本电池更换的几项建议...
- birt 报表与润乾报表对比
- linux 查看用户访问ip,(总结)按时按登录IP记录Linux所有用户操作日志的方法(附脚本)...
- 【mmdetection系列】mmdetection之backbone讲解
- wifi系列------初始化
- 计算机提示无法验证发布者,win10提示无法验证发布者所以windows已阻止此软件的解决方法【图文教程】...
- openCV: 利用python和cv2绘出一个笑脸