work hard work smart

专注于Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Elasticsearch 建立ik中文分词器和自定义分词

Posted on 2020-07-17 17:49  work hard work smart  阅读(559)  评论(0编辑  收藏  举报

一、建立ik中文分词器

1、下载ik中文分词器

进入https://github.com/medcl/elasticsearch-analysis-ik

使用第一种方式安装,进入https://github.com/medcl/elasticsearch-analysis-ik/releases

 

 

选择版本7.4.2 。和ES7.4.2的版本保持一致。

 

 下载elasticsearch-analysis-ik-7.4.2.zip

 

将下载的分词器放到 192.168.127.130 这台服务器的 /home/tools 路径下

 

 

2、安装分词器

解压 unzip  elasticsearch-analysis-ik-7.4.2.zip /usr/local/eleasticsearch-7.4.2/plugins/ik

 

 

tar.gz 格式解压如下

 

 前提是ik这个文件夹存在。

 

3、重启ES

ps -ef | grep elasticsearch

kill xxx

切换成esuser用户

cd /user/local/elasticsearch-7.4.2/bin 

./elasticsearch  -d

这样中文分词器就安装成功了。

 

4、测试中文分词器

 

 分析器 analyzer值为

ik_max_word : 最细粒度拆分

ik_smart : 最粗粒度拆分

 

 

返回分词结果为:

{
    "tokens": [
        {
            "token": "我",
            "start_offset": 0,
            "end_offset": 1,
            "type": "CN_CHAR",
            "position": 0
        },
        {
            "token": "喜欢吃",
            "start_offset": 1,
            "end_offset": 4,
            "type": "CN_WORD",
            "position": 1
        },
        {
            "token": "喜欢",
            "start_offset": 1,
            "end_offset": 3,
            "type": "CN_WORD",
            "position": 2
        },
        {
            "token": "吃",
            "start_offset": 3,
            "end_offset": 4,
            "type": "CN_CHAR",
            "position": 3
        },
        {
            "token": "苹果",
            "start_offset": 4,
            "end_offset": 6,
            "type": "CN_WORD",
            "position": 4
        }
    ]
}  

可以看出中文分词器已经有效果了。

 

二、自定义中文词库

1、如下图,对“我在中华学习网学习”进行分词

 

 返回结果

{
    "tokens": [
        {
            "token": "我",
            "start_offset": 0,
            "end_offset": 1,
            "type": "CN_CHAR",
            "position": 0
        },
        {
            "token": "在",
            "start_offset": 1,
            "end_offset": 2,
            "type": "CN_CHAR",
            "position": 1
        },
        {
            "token": "中华",
            "start_offset": 2,
            "end_offset": 4,
            "type": "CN_WORD",
            "position": 2
        },
        {
            "token": "学习网",
            "start_offset": 4,
            "end_offset": 7,
            "type": "CN_WORD",
            "position": 3
        },
        {
            "token": "学习",
            "start_offset": 4,
            "end_offset": 6,
            "type": "CN_WORD",
            "position": 4
        },
        {
            "token": "网",
            "start_offset": 6,
            "end_offset": 7,
            "type": "CN_CHAR",
            "position": 5
        },
        {
            "token": "学习",
            "start_offset": 7,
            "end_offset": 9,
            "type": "CN_WORD",
            "position": 6
        }
    ]
}  

可以看到“中华学习网” 并没有做为一个分词。

那么,如何将“中华学习网”作为一个词汇呢?

进入ik插件  cd /usr/local/elasticsearch-7.4.2/plugins/ik/config

vi IKAnalyzer.cfg.xml

 

 vi custom.doc

 

 然后保存。重启ES。

 

2、测试自定义分词

 

 可以看到,自定义分词“中华学习网”已经生效了。