3打造企业级搜索词库管理体系
学习目标
- 构建词库的方法
- 掌握Elastic Stack的词库集成机制和功能
词库的完备性影响搜索结果,影响用户体验
目录
- 词库构建策略
- 词库热更新机制
如何评估构建的搜索系统的能力?
词库构建策略
- IK Analyzer
提供ik_max_word和ik smart两种分词策略 - HanLP Analyzer
属于HanLP工具包,支持多种分词算法
IK Analyzer
ik_max_word:切分粒度细
ik smart:切分粒度粗
elastic search版本与analysis-ik版本需一致
初始化IK
https://github.com/infinilabs/analysis-ik/releases/tag/v7.9.3
把IK Analyzer文件拷贝到elastic search/plugins/ik文件夹
config文件夹:词库,IKAnalyzer.cfg配置词库
elasticsearch head ,es服务器管理可视化工具
kibana Kibana 可视化工具 可搜索和查看存储在 Elasticsearch索引中的数据并与之交互
开发过程中验证分词效果
自定义词库
- config文件夹新建词库文件 *.dic,写入关键词
- 添加配置
- 重启服务
词库热更新机制
动态数据变更场景都需要考虑热更新能力
实时更新分析器和索引
- 只新增
如敏感词 - 增删改
如专业词
只新增
方案:远程扩展词库接口实现方案
- 运营后台修改词库
- IK分词器定时合并主词库
远程扩展词库接口
- 开发查询接口
查询数据库中是否有新词 - 配置远程接口
数据库同步
使用云es服务不可修改es源码,此方案不可用
思路:修改IK源码,Dictionary加载时启动线程定时获取数据库新增字典,并更新到词库(调用Dictionary的addWords方法添加)
增删改
新增 IK的Dictionary.addWords方法
删除 IK的Dictionary.disableWords方法
更新 删除+更新
注:需添加数据库配置文件jdbc.properties,数据库驱动包mysql-connector-java.jar
思考题
基于IK分词器,如果向实现词库热更新有哪几种实现方式?