Elasticsearch IK分词器

Elasticsearch-IK分词器

一、简介

因为Elasticsearch中默认的标准分词器(analyze)对中文分词不是很友好,会将中文词语拆分成一个一个中文的汉字,所以引入中文分词器-IK。

使用默认

响应结果

二、安装IK分词器

1.先下载ik分词器

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

注意 一定要下载和Elastic版本相同的IK分词器

2.我们将ik分词器上传到我们的es的plugins/ik目录下,ik文件夹需要我们自己创建

cd /usr/local/elasticsearch/plugins/ik/
unzip elasticsearch-analysis-ik-XX.zip 

# windos下安装也是一样的操作

3.重启

重启的时候在日志中就可以看到关于IK分词器已经被加载进去了

响应结果

三、测试分词器

1.ik_smart

会做最粗粒度的拆分,比如会将“我是中国人”拆分为我、是、中国人。

POST _analyze
{
  "analyzer": "ik_smart", 
  "text": "我是中国人"
}
响应结果

2.ik_max_word

会将文本做最细粒度的拆分,比如会将“我是中国人”拆分为“我、是、中华、中国人、中国、国人

POST _analyze
{
  "analyzer": "ik_max_word", 
  "text": "我是中国人"
}
响应结果

四、自定义词库

使用场景

在利用ik分词的过程中,当ik的分词规则不满足我们的需求了,这个时候就可以利用ik的自定义词库进行匹配,比如最火的常用的网络用语;我们输入乔碧罗殿下正常的情况下,是不会识别整个词语的,返回的都是分开的。我们识别整个词语就需要自定义词库

1、自定义词库方式一(新建dic文件)

(1)到elasticsearch/plugins中寻找ik插件所在的目录

(2)在ik中的config文件中添加词库

创建目录    mkdir ciku
创建文件    vim test.dic
#编辑test.dic 注意每个词语一行

(3)修改ik配置

vim /**/elasticsearch/plugins/ik/config/IKAnalyzer.cfg.xml

(4)重启ElasticSearch

2、通过Nginx配置自定义词库

(1)安装好nginx,到nginx的html目录下创建分词文件

vim fenci.txt
#每个词语一行

(2)修改ik配置

vim /**/elasticsearch/plugins/ik/config/IKAnalyzer.cfg.xml

(3)重启ElasticSearch

效果

我们输入乔碧罗殿下正常的情况下,是不会识别整个词语的,返回的都是分开的。当我们在词库文件中写上乔碧罗殿下就会返回下面的效果

posted @   coffee_baby  阅读(2246)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示