elasticsearch之自定义IK分词器词库(二)

一、引言

上篇博客主要介绍了,IK分词器的安装和使用,这篇章我们来谈谈如何构建定制的词库,来满足复杂的业务需求。

二、本地自定义词库安装

  1. 首先我们在elasticsearch-6.3.1/plugins/ik/config 目录下创建一个自己的文件xxx.dic
    在这里插入图片描述

  2. 在xxx.dic写入需要分词的词或短语,如下案例所示
    在这里插入图片描述

  3. vim elasticsearch-6.3.1/plugins/ik/config/IKAnalyzer.cfg.xml,配置本地词库
    在这里插入图片描述

  4. 重启ES生效

  5. 测试效果
    在这里插入图片描述

三、远程自定义词库安装

  1. github上远程词库安装建议
    在这里插入图片描述
  2. 关键代码演示(使用http服务实现)
@RequestMapping(value="/customWords.html")
    public void getCustomDict(HttpServletRequest request, HttpServletResponse response) {
        try {
            //依据实际业务逻辑,获取词汇组。每个词使用\n分隔。
            String content = wordSplitService.getCustomWord();
            // 返回数据
            OutputStream out = response.getOutputStream();
            // Head需要带上 Last-Modified ETag 属性
            // 此处是输出的文件内容大小,不一定是这个样子,只要保证当文件发生变化时,Last-Modified和ETag也是变化的就OK ,比如也可以是文件的MD5
            response.setHeader("Last-Modified", String.valueOf(content.length()));
            response.setHeader("ETag", String.valueOf(content.length()));
            response.setContentType("text/plain; charset=utf-8");
            out.write(content.getBytes("utf-8"));
            out.flush();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
  1. vim elasticsearch-6.3.1/plugins/ik/config/IKAnalyzer.cfg.xml 配置远程地址
    在这里插入图片描述
  2. 远程词库测试
  • 远程词库添加“不讲武德”测试效果
    在这里插入图片描述
  • 远程词库添加“不讲武德
    在这里插入图片描述
  • 查看是否添加成功
    在这里插入图片描述
  • 远程词库添加“不讲武德”测试效果
    在这里插入图片描述

四、注意事项

  1. 远程词库相比于本地词库的优势是,不需要重启ES
  2. 词库更新完成后,ES只会对新增的数据用新词分词。历史数据是不会重新分词的。如果想要历史数据重新分词。需要执行:

POST weibo_test/_update_by_query?conflicts=proceed

验证:
首先创建一张索引表并指定IK分词器分词

PUT weibo_test
{
  "settings": {
    "number_of_replicas": 1
    , "number_of_shards": 5
  }
}
PUT weibo_test/_mapping/mytype
{
    "mytype":{
      "properties": {
        "context":{
          "type": "text", 
          "analyzer": "ik_max_word"
        }
      }
    }
}
//put一条数据
PUT /weibo_test/mytype/1003
{
  "name":"马保国",
  "context":"红海行动"
}

添加完新词更新词库,发现已经将“海行”分词出来了
在这里插入图片描述
但是在表中查询发现匹配不上,原因是ES只会对新增的数据用新词分词。历史数据是不会重新分词的。
在这里插入图片描述
执行索引历史数据重新分词
在这里插入图片描述
再次查询可以匹配上
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值