ElasticSearch——IK分词器的下载及使用

ElasticSearch——IK分词器的下载及使用

1、什么是IK分词器

ElasticSearch 几种常用分词器如下:

分词器分词方式
StandardAnalyzer单字分词
CJKAnalyzer二分法
IKAnalyzer词库分词

分词∶即把一段中文或者别的划分成一个个的关键字,我们在搜索时候会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一个匹配操作,默认的中文分词是将每个字看成一个词,比如“我爱中国"会被分为"我"“爱”“中”"国”,这显然是不符合要求的,所以我们需要安装中文分词器ik来解决这个问题。

IK提供了两个分词算法:ik_smart和ik_max_word,其中ik smart为最少切分,ik_max_word为最细粒度划分!

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

ik_smart: 会做最粗粒度的拆分,比如会将"中华人民共和国国歌"拆分为"中华人民共和国,国歌"。

2、Ik分词器的下载安装

下载地址: https://github.com/medcl/elasticsearch-analysis-ik

注意:IK分词器插件的版本要和ElasticSearch的版本一致

在这里插入图片描述

下载完后,解压安装包到 ElasticSearch 所在文件夹中的plugins目录中:

在这里插入图片描述

再启动ElasticSearch,查看IK分词器插件是否安装成功:

在这里插入图片描述

安装成功!

3、使用Kibana测试IK

1、启动Kibana

在这里插入图片描述

2、访问请求:http://localhost:5601/

在这里插入图片描述

3、选择开发工具Dev Tools,点击控制台

在这里插入图片描述

4、在控制台编写分词请求,进行测试

IK提供了两个分词算法:ik_smart和ik_max_word,其中ik smart为最少切分,ik_max_word为最细粒度划分!

测试 ik_smart 分词算法,最少切分

在这里插入图片描述

测试 ik_max_word 分词算法,最细粒度划分

分词请求:

GET _analyze
{
  "analyzer": "ik_max_word",
  "text": "我爱中国共产党"
}

分词结果:

{
  "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" : 7,
      "type" : "CN_WORD",
      "position" : 2
    },
    {
      "token" : "中国",
      "start_offset" : 2,
      "end_offset" : 4,
      "type" : "CN_WORD",
      "position" : 3
    },
    {
      "token" : "国共",
      "start_offset" : 3,
      "end_offset" : 5,
      "type" : "CN_WORD",
      "position" : 4
    },
    {
      "token" : "共产党",
      "start_offset" : 4,
      "end_offset" : 7,
      "type" : "CN_WORD",
      "position" : 5
    },
    {
      "token" : "共产",
      "start_offset" : 4,
      "end_offset" : 6,
      "type" : "CN_WORD",
      "position" : 6
    },
    {
      "token" : "党",
      "start_offset" : 6,
      "end_offset" : 7,
      "type" : "CN_CHAR",
      "position" : 7
    }
  ]
}

比较两个分词算法对同一句中文的分词结果,ik_max_word比ik_smart得到的中文词更多(从两者的英文名含义就可看出来),但这样也带来一个问题,使用ik_max_word会占用更多的存储空间。

4、扩展字典

我们用分词器对 “万里顾一程” 进行分词:先使用 ik_smart 分词算法

在这里插入图片描述

在使用 ik_max_word分词算法,进行细粒度的划分:

GET _analyze
{
  "analyzer": "ik_max_word",
  "text": "万里顾一程"
}

分词结果:

{
  "tokens" : [
    {
      "token" : "万里",
      "start_offset" : 0,
      "end_offset" : 2,
      "type" : "CN_WORD",
      "position" : 0
    },
    {
      "token" : "万",
      "start_offset" : 0,
      "end_offset" : 1,
      "type" : "TYPE_CNUM",
      "position" : 1
    },
    {
      "token" : "里",
      "start_offset" : 1,
      "end_offset" : 2,
      "type" : "COUNT",
      "position" : 2
    },
    {
      "token" : "顾",
      "start_offset" : 2,
      "end_offset" : 3,
      "type" : "CN_CHAR",
      "position" : 3
    },
    {
      "token" : "一程",
      "start_offset" : 3,
      "end_offset" : 5,
      "type" : "CN_WORD",
      "position" : 4
    },
    {
      "token" : "一",
      "start_offset" : 3,
      "end_offset" : 4,
      "type" : "TYPE_CNUM",
      "position" : 5
    },
    {
      "token" : "程",
      "start_offset" : 4,
      "end_offset" : 5,
      "type" : "CN_CHAR",
      "position" : 6
    }
  ]
}

使用上面两种分词算法后,发现 “万里顾一程”被分成了“万里”、“顾”、“一程”,这是因为在IK自带的字典中没有“顾一程”这个词,如果想得到“顾一程”这个词,怎么办呢?

这就要配置自己的扩展字典了,就是在IK分词器字典中加入我们自定义的字典,在词典中加入想要的词。

在ik分词器文件的config目录中新建自定义的字典文件,以.dic为后缀,并在文件中加入“顾一程”:

在这里插入图片描述

然后打开 IKAnalyzer.cfg.xml 文件,把自定义的字典添加到IK的字典中:

在这里插入图片描述

重启ES和Kibana,再用分词器对 “万里顾一程” 进行分词:此时“顾一程”就是一个词了。

在这里插入图片描述

### 如何下载并安装 IK 分词器 #### 下载 IK 分词器 为了确保 IK 分词器能够正常工作,其版本必须与 Elasticsearch 的版本相匹配。因此,在下载之前,请确认当前使用Elasticsearch 版本号。访问官方 GitHub 发布页面获取对应版本的 IK 分词器压缩包链接[^1]。 以下是具体操作步骤: 1. 打开浏览器,进入 [IK 分词器发布页](https://github.com/medcl/elasticsearch-analysis-ik/releases),查找适用于您 Elasticsearch 版本的分词器。 2. 点击对应的版本标签,复制该版本的 ZIP 文件下载地址。例如,如果您的 Elasticsearch 是 7.0.0,则应选择 `v7.0.0` 并复制如下 URL 地址: ``` https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.0.0/elasticsearch-analysis-ik-7.0.0.zip ``` #### 安装 IK 分词器 完成下载后,需按照以下方法将 IK 分词器部署到 Elasticsearch 中。 ##### 非 Docker 环境下的安装 在本地环境或者虚拟机环境中运行 Elasticsearch 时,可以通过命令行直接安装插件。假设已知 Elasticsearch 路径以及版本信息,可以执行以下命令来安装 IK 分词器[^4]: ```bash ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.0.0/elasticsearch-analysis-ik-7.0.0.zip ``` 此命令会自动解压并将插件放置于指定路径 `/usr/share/elasticsearch/plugins` 或其他配置好的插件目录中。 ##### Docker 环境下的安装 当使用 Docker 运行 Elasticsearch 实例时,由于容器隔离特性,无法通过上述方式在线安装插件。此时需要手动上传 IK 分词器至目标位置[^5]: 1. **准备文件**: 将刚刚下载得到的 `.zip` 压缩包保存到宿主机上的某个临时目录(如 `/tmp/`)。 2. **定位容器 ID 名称**: 使用 `docker ps` 查看正在运行中的 Elasticsearch 容器名称或 ID。 3. **传输文件至容器内部**: ```bash docker cp /tmp/elasticsearch-analysis-ik-7.4.0.zip <容器ID>:<目标路径> ``` 替换 `<容器ID>` 和 `<目标路径>` 参数。通常情况下,推荐的目标路径为 `/usr/share/elasticsearch/plugins`. 4. 解压文件: 登录到容器内,并切换到 plugins 插件目录下进行解压处理。 ```bash unzip elasticsearch-analysis-ik-7.4.0.zip -d ik rm elasticsearch-analysis-ik-7.4.0.zip ``` 最后重启 Elasticsearch 服务使更改生效。 --- ### 注意事项 默认情况下,Elasticsearch 使用 Standard Analyzer 对文档内容进行索引分析,但对于中文字符支持较差。安装完成后建议测试验证新加入的功能是否可用[^3]。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万里顾—程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值