安装IK分词器
首先安装IK分词器,参考:https://blog.csdn.net/weixin_44062339/article/details/85059252
自定义词库
现在网络热词很多,每隔一段时间就会出现网红热词;但是如果直接使用IK分词,是识别不了这些词的;
比如:
curl -XGET 'http://hadoop01:9200/_analyze?pretty&analyzer=ik_max_word' -d '
老铁没毛病,双击666
’
IK并没有识别出网红的词汇;ik 的主词典中没有【老铁、没毛病】词,所以被拆分了。
修改 IK 的配置文件 :ES 目录/plugins/ik/config/ik/IKAnalyzer.cfg.xml
修改配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict">custom/my.dic</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords">ext_stopword.dic</entry>
<!--用户可以在这里配置远程扩展字典 -->
<entry key="remote_ext_dict">192.168.0.1/stopworld.di</entry>
<!--用户可以在这里配置远程扩展停止词字典-->
<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
在my.di中添加:老铁、没毛病
然后重启es;在次执行:
curl -XGET ‘http://hadoop01:9200/_analyze?pretty&analyzer=ik_max_word’ -d ‘老铁没毛病,双击666’
但是,上面的操作是需要进行重启的,上面的步骤只是更新词库,并不是所谓的热更新;
所谓的热更新词库,是要在不重启es的前提下完成的;
词库热更新
1、 下载tomcat,作为远程词库的容器
需要在tomcat中配置词库
/webapp/ROOT这个路径下新建一个远程词库:
vim hot.dic
2、 测试tomcat启动后,是否能够访问:
3、 更改ik的配置:IKAnalyzer.cfg.xml
加入http://hadoop03:8080/hot.dic,如下:
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict">custom/my.dic</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords"></entry>
<!--用户可以在这里配置远程扩展字典 -->
<entry key="remote_ext_dict">http://hadoop03:8080/hot.dic</entry>
<!--用户可以在这里配置远程扩展停止词字典-->
<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
4、 更新hot.dic之后会发现es中输出如下信息:
到此就实现了Elasticsearch自定义词库热更新。