es ik分词热更新MySQL,ElasticSearch(25)- 改IK分词器源码来基于mysql热更新词库
代碼地址
已經修改過的支持定期從數據庫中提取新詞庫,來實現熱更新。代碼:
https://github.com/csy512889371/learndemo/tree/master/elasticsearch-analysis-ik-5.2.0
概述
es不停機,直接我們在外部某個地方添加新的詞語,es中立即熱加載到這些新詞語
熱更新的方案
1、修改ik分詞器源碼,然后手動支持從mysql中每隔一定時間,自動加載新的詞庫
2、基于ik分詞器原生支持的熱更新方案,部署一個web服務器,提供一個http接口,通過modified和tag兩個http響應頭,來提供詞語的熱更新
用第一種方案,第二種,ik git社區官方都不建議采用,覺得不太穩定
下載源碼
https://github.com/medcl/elasticsearch-analysis-ik/tree/v5.2.0
ik分詞器,是個標準的java maven工程,直接導入eclipse就可以看到源碼
修改源碼
Dictionary類,169行:Dictionary單例類的初始化方法,在這里需要創建一個我們自定義的線程,并且啟動它
HotDictReloadThread類:就是死循環,不斷調用Dictionary.getSingleton().reLoadMainDict(),去重新加載詞典
Dictionary類,389行:this.loadMySQLExtDict();
Dictionary類,683行:this.loadMySQLStopwordDict();
mvn package打包代碼
target\releases\elasticsearch-analysis-ik-5.2.0.zip
解壓縮ik壓縮包
將mysql驅動jar,放入ik的目錄下
修改jdbc相關配置
重啟es
觀察日志,日志中就會顯示我們打印的那些東西,比如加載了什么配置,加載了什么詞語,什么停用詞
總結
以上是生活随笔為你收集整理的es ik分词热更新MySQL,ElasticSearch(25)- 改IK分词器源码来基于mysql热更新词库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql分布式安装可靠读写案列图解,高
- 下一篇: 双级减速器优化matlab,基于MATL