Elasticsearch自定义词库热更新方案

安装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自定义词库热更新。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是使用 Elasticsearch 中的 IK 分词器进行停词和自定义词库的步骤: 1. 安装 Elasticsearch 和 IK 分词器插件。 2. 创建自定义词库文件,格式如下: ``` # 单个词语 词语1 词语2 ... # 带有词性的词语 词语1,词性1 词语2,词性2 ... ``` 注:词性可以不写,用逗号隔开。 3. 将自定义词库文件放置在 Elasticsearch 安装目录下的 `plugins/ik/config/` 目录下。 4. 修改 IK 分词器配置文件,指定停用词文件和自定义词库文件,示例如下: ``` { "index": { "analysis": { "analyzer": { "my_analyzer": { "type": "custom", "tokenizer": "ik_max_word", "filter": [ "my_stopwords", "my_synonyms" ] } }, "filter": { "my_stopwords": { "type": "stop", "stopwords_path": "stopwords.txt" }, "my_synonyms": { "type": "synonym", "synonyms_path": "synonyms.txt" } } } } } ``` 注:上面示例中使用了停用词文件和同义词文件,可以根据需要自行配置。 5. 创建索引并指定使用自定义分词器。 ``` PUT /my_index { "settings": { "analysis": { "analyzer": { "my_analyzer": { "type": "custom", "tokenizer": "ik_max_word", "filter": [ "my_stopwords", "my_synonyms" ] } }, "filter": { "my_stopwords": { "type": "stop", "stopwords_path": "stopwords.txt" }, "my_synonyms": { "type": "synonym", "synonyms_path": "synonyms.txt" } } } }, "mappings": { "properties": { "my_field": { "type": "text", "analyzer": "my_analyzer" } } } } ``` 6. 测试分词效果。 可以使用以下命令测试分词效果: ``` GET /my_index/_analyze { "analyzer": "my_analyzer", "text": "自定义分词器测试" } ``` 上述命令会返回分词结果,可以根据需要调整自定义词库和停用词文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值