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热更新词库相关推荐

  1. ik mysql热加载分词_Elasticsearch 之(25)重写IK分词器源码来基于mysql热更新词库...

    热更新在上一节< IK分词器配置文件讲解以及自定义词库>自定义词库,每次都是在es的扩展词典中,手动添加新词语,很坑 (1)每次添加完,都要重启es才能生效,非常麻烦 (2)es是分布式的 ...

  2. es ik分词热更新MySQL,ElasticSearch(25)- 改IK分词器源码来基于mysql热更新词库

    代码地址 已经修改过的支持定期从数据库中提取新词库,来实现热更新.代码: https://github.com/csy512889371/learndemo/tree/master/elasticse ...

  3. Elasticsearch7.15.2 修改IK分词器源码实现基于MySql8的词库热更新

    文章目录 一.源码分析 1. 默认热更新 2. 热更新分析 3. 方法分析 二.词库热更新 2.1. 导入依赖 2.2. 数据库 2.3. JDBC 配置 2.4. 打包配置 2.5. 权限策略 2. ...

  4. es修改IK分词器源码 mysql热词动态更新(报错解决x3)

    最近在公司遇到的一个问题,给elasticsearch配置ik热部署mysql词库. 我是参照下面这个博客来做的 https://www.cnblogs.com/xiaoxiaoliu/p/11218 ...

  5. 【转载保存】修改IK分词器源码实现动态加载词典

    链接:http://www.gongstring.com/portal/article/index/id/59.html 当前IKAnalyzer从发布最后一个版本后就一直没有再更新,使用过程中,经常 ...

  6. 庖丁解牛分词器---源码下载---错误问题解决

    庖丁解牛分词器---源码下载 地址:http://download.csdn.net/detail/u014737138/9349677 由于国内的环境限制,访问不了Google  ,同时网上那些下载 ...

  7. Elasticsearch之中文分词器插件es-ik的自定义热更新词库

    1: 部署 http 服务 在这使用 tomcat7 作为 web 容器, 先下载一个 tomcat7, 然后上传到某一台服务器上(192.168.80.10). 再执行以下命令 tar -zxvf ...

  8. 六Elasticsearch之中文分词器插件es-ik的热更新词库

    参考:http://www.mamicode.com/info-detail-1705113.html 先声明,热更新词库,需要用到,web项目和Tomcat.不会的,请移步 Eclipse下Mave ...

  9. solr两种安装、ik分词器设置、DIH导入mysql数据

    文章目录 solr 安装(内置方式) solr 安装(tomcat方式) IK中文分词器设置 solr数据操作 使用dataimport导入数据库数据 solr 安装(内置方式) 安装包 官网下载安装 ...

最新文章

  1. CSS-3 Animation 的使用
  2. java中判断字段真实长度(中文2个字符,英文1个字符)的方法
  3. CUDA的global内存访问的问题
  4. Xcode中捕获iphone/ipad/ipod手机摄像头的实时视频数据
  5. 卓有成效的管理者--总结
  6. sklearn svm如何选择核函数_文本挖掘篇|利用SVM进行短文本分类
  7. 用java输出真值表离散数学_离散数学 第一章 命题逻辑 1-4真值表与等价公式
  8. animation 先执行一次 在持续执行_FANUC机器人:先执行指令功能/后执行指令功能介绍与使用方法...
  9. Oracle自增ID实现
  10. Java面向对象编程 实验报告
  11. Intellij idea破解2017
  12. 微信号码检测工具的使用成功案例(一)
  13. 聚类——模糊c均值聚类
  14. 客户分析表格怎么做 财务合并报表培训 5分钟看懂财务报表
  15. 情感+事业,强者必学的定律
  16. go mod 使用方法
  17. 【算法】h0145. 会议安排(贪心算法)
  18. Python爬虫 | 2008-2018年各省专利统计数据
  19. Windows exe文件如何提取图标
  20. Python eval()和exec()函数详解

热门文章

  1. word中常用快捷键
  2. MPLS 配置远端LDP会话实验 详解
  3. 《Learn python3 the hard way》ex14 Prompting and Passing
  4. 笔记本 原因代码: 0x500ff 关机类型: 关闭电源_图吧垃圾佬关于笔记本电池更换的几项建议...
  5. birt 报表与润乾报表对比
  6. linux 查看用户访问ip,(总结)按时按登录IP记录Linux所有用户操作日志的方法(附脚本)...
  7. 【mmdetection系列】mmdetection之backbone讲解
  8. wifi系列------初始化
  9. 计算机提示无法验证发布者,win10提示无法验证发布者所以windows已阻止此软件的解决方法【图文教程】...
  10. openCV: 利用python和cv2绘出一个笑脸