Elasticsearch安装中文分词器

Linux2021-02-03 09:32:58570条
为什么要在elasticsearch中要使用ik这样的中文分词呢,那是因为es提供的分词是英文分词,对于中文的分词就做的非常不好了,因此我们需要一个中文分词器来用于搜索和使用。今天我们就尝试安装下IK分词。

1. 解压安装

1.1 去Github下载对应的分词插件

https://github.com/medcl/elasticsearch-analysis-ik/releases

根据不同版本下载不同的分词插件

1.2 解压到elasticsearch/plugins目录下

cd /usr/share/elasticsearch/plugins
mkdir ik
unzip elasticsearch-analysis-ik-7.10.2.zip

1.3 重启Elasticsearch

2. 通过elasticsearch-plugin命令安装

/usr/share/elasticsearch/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.10.2/elasticsearch-analysis-ik-7.10.2.zip

安装好之后重启es。

3. IK分词器简介

3.1 ik有两种分词模式,ik_max_wordik_smart模式:

  • ik_max_word: 会将文本做最细粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”,会穷尽各种可能的组合;
  • ik_smart: 会做最粗粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”。

索引时,为了提供索引的覆盖范围,通常会采用ik_max_word分析器,会以最细粒度分词索引,搜索时为了提高搜索准确度,会采用ik_smart分析器,会以粗粒度分词。

3.2 实测

{
    "analyzer": "ik_max_word",
    "text": "Like X 国庆放假的"
}

运行结果:

{
    "tokens": [
        {
            "token": "like",
            "start_offset": 0,
            "end_offset": 4,
            "type": "ENGLISH",
            "position": 0
        },
        {
            "token": "x",
            "start_offset": 5,
            "end_offset": 6,
            "type": "ENGLISH",
            "position": 1
        },
        {
            "token": "国庆",
            "start_offset": 7,
            "end_offset": 9,
            "type": "CN_WORD",
            "position": 2
        },
        {
            "token": "放假",
            "start_offset": 9,
            "end_offset": 11,
            "type": "CN_WORD",
            "position": 3
        },
        {
            "token": "的",
            "start_offset": 11,
            "end_offset": 12,
            "type": "CN_CHAR",
            "position": 4
        }
    ]
}

4. 配置中文停用词

4.1 新建cn_stopwords.dic文件,写入中文停用词。

的
一
不
在
人
有
是
为
以
于
上
...

常用的中文停用词可自行上网寻找,或根据自己的需求进行完善。

4.2 修改IK分词器配置

vi /etc/elasticsearch/analysis-ik/IKAnalyzer.cfg.xml

cn_stopwords.dic加到扩展停用词配置中

<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords">cn_stopword.dic;</entry>

修改完重启elasticsearch。

评论啦~
暂无评论,快来抢沙发吧!