【Elasticsearch入门到落地】5、安装IK分词器

接上篇《4、Elasticsearch的安装

上一篇我们进行了Elasticsearch以及Kibana的环境准备及软件安装,本篇我们安装最后一个支持软件IK分词器。

一、IK分词器概念

我们再来回顾一下上一张IK分词器的概念:

IK分词器(IK Analyzer)是一款开源的中文分词工具,支持智能分词、细粒度分词等多种分词模式。它基于词典的分词算法,结合了最大匹配法和逆向最大匹配法,能够在保证分词准确性的同时,保持较高的分词速度。IK分词器的主要作用是将中文文本切分为有意义的词项,为后续的文本分析、信息检索、机器学习等任务提供基础数据。其优势在于高效性、灵活性和多种分词模式,适用于不同的应用场景。

Elasticsearch、Kibana和IK分词器在数据处理和搜索分析领域各自扮演着重要的角色。Elasticsearch负责存储、搜索和分析数据;Kibana负责数据的可视化和管理;而IK分词器则专注于中文文本的分词处理,为Elasticsearch等搜索引擎提供准确的分词结果。

二、安装IK分词器插件

1、在线安装IK插件(较慢)

我们可以从github上安装开源的ik分词器插件,分为以下几步:

bash 复制代码
# 进入容器内部
docker exec -it elasticsearch /bin/bash

# 在线下载并安装
./bin/elasticsearch-plugin  install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip

#退出
exit
#重启容器
docker restart elasticsearch

但是这种受制于外网的网速原因,安装的时间比较长。我们推荐离线安装。

2、离线安装ik插件(推荐)

(1)查看数据卷目录

安装插件需要知道elasticsearch的plugins目录位置,而我们用了数据卷挂载,因此需要查看elasticsearch的数据卷目录,通过下面命令查看:

bash 复制代码
docker volume inspect es-plugins

显示结果:

说明plugins目录被挂载到了:/var/lib/docker/volumes/es-plugins/_data这个目录中。

(2)解压缩分词器安装包

下面我们需要把之前下载的安装包中的ik分词器解压缩(https://download.csdn.net/download/booguojieji/85329645),重命名为ik:

注:zip如果直接在linux中解压的话,需要提前安装unzip命令(sudo yum install unzip)。

解压完毕后,可以看到具体的IK分词器安装包中的内容:

(3)将ik文件夹上传到es容器的插件数据卷中

从解压后的ik文件夹所在的目录,复制该文件夹到/var/lib/docker/volumes/es-plugins/_data目录下,也就是刚刚查到es容器的plugins目录:

bash 复制代码
sudo cp -rp /home/ik /var/lib/docker/volumes/es-plugins/_data/

注:想要将/home/ik文件夹完整地复制到/var/lib/docker/volumes/es-plugins/_data目录下,需要使用cp命令结合-r(递归复制整个目录树)和-p(保留文件的属性,如时间戳、权限等)选项。

(4)重启容器

使用docker restart es重启es的容器,使其可以重新加载plugins目录,然后使用docker logs -f es查看启动日志:

bash 复制代码
# 4、重启容器
docker restart es
# 查看es日志
docker logs -f es

日志中我们如果看到"loaded plugin [analysis-ik]"字样,证明我们的ik分词器插件已经在es中安装成功:

(5)测试

IK分词器包含两种模式:

bash 复制代码
ik_smart:最少切分
ik_max_word:最细切分
bash 复制代码
GET /_analyze
{
  "analyzer": "ik_max_word",
  "text": "星巴克的美式咖啡太好喝了"
}

这段语法是用于在Elasticsearch中使用IK分词器对文本进行分析的HTTP GET请求。下面是对各个部分的解释:
1)HTTP方法:GET

这里使用的是HTTP的GET方法,用于从服务器请求数据。在这个上下文中,它不是用来获取存储的数据,而是用来触发一个分析操作。
2)URL:/_analyze

URL指向Elasticsearch的_analyze端点。这个端点允许你对文本进行分析,查看它是如何被分词器分割成词条的。
3)请求体(Body):

请求体包含了要执行的分析操作的详细参数。

●"analyzer": "ik_max_word":

这里指定了要使用的分词器是ik_max_word。IK分词器是Elasticsearch的一个中文分词插件,提供了ik_smart和ik_max_word两种分词模式。ik_max_word会将文本做最细粒度的拆分,适合用于索引建立时做尽可能多的匹配。

●"text": "星巴克的美式咖啡太好喝了":

这里是要被分析的文本。在这个例子中,文本是中文和英文的混合,包含了"星巴克"、"美式"、"咖啡"和"太好喝了"这些词汇。

当这个请求被发送到Elasticsearch时,它会使用ik_max_word分词器对指定的文本进行分析,并返回分析的结果。结果通常包括分词后的词条列表,以及每个词条对应的起始和结束位置等信息(尽管这些信息可能不是所有情况下都会返回,具体取决于Elasticsearch的配置和请求的参数)。

我们打开Kibana,在右上角点击"Dev Tools",进入开发工具的调试界面,输入上述指令,查看结果:

可以发现我们用最细切分将测试语句,拆分成了一个一个的词语。

三、扩展词词典

随着互联网的发展,"造词运动"也越发的频繁。出现了很多新的词语,在原有的词汇列表中并不存在。比如:"奥力给","葛优躺" 等。

所以我们的词汇也需要不断的更新,IK分词器提供了扩展词汇的功能。

1、打开IK分词器config目录

2、配置IKAnalyzer.cfg.xml文件

在IKAnalyzer.cfg.xml配置文件内容添加(vim IKAnalyzer.cfg.xml)

主要是在<entry key="ext_dict">ext.dic</entry>中添加一个"ext.dic"。

然后新建一个 ext.dic,可以参考config目录下复制一个配置文件进行修改:

3、重启elasticsearch

bash 复制代码
docker restart es
# 查看 日志
docker logs -f es

看到下面的语句,证明我们已经成功加载ext.dic配置文件:

4、测试效果

四、停用词词典

在互联网项目中,在网络间传输的速度很快,所以很多语言是不允许在网络上传递的,如:关于宗教、政治等敏感词语,那么我们在搜索时也应该忽略当前词汇。

IK分词器也提供了强大的停用词功能,让我们在索引时就直接忽略当前的停用词汇表中的内容。

1、配置IKAnalyzer.cfg.xml文件

IKAnalyzer.cfg.xml配置文件内容添加扩展停止词字典:

主要是在<entry key="ext_stopwords">stopword.dic</entry>中添加一个"stopword.dic"。

然后新建一个stopword.dic,在stopword.dic添加停用词:

2、重启elasticsearch

bash 复制代码
# 重启服务
docker restart es
docker restart kibana
# 查看 日志
docker logs -f es

日志中已经成功加载stopword.dic配置文件:

3、测试效果

至此,关于IK分词器的安装就讲解完毕了。下一篇我们来学习索引库的操作。

参考:《黑马Elasticsearch全套教程》
转载请注明出处:https://guangzai.blog.csdn.net/article/details/144864948

相关推荐
泰迪智能科技017 小时前
“云梦乘风起,数智继风华”丨2024韩山师范学院数学与统计学院大数据方向企业微专业结业典礼圆满结束
大数据
GIS数据转换器7 小时前
低空经济新动力:无人机航测技术的普及与应用
大数据·人工智能·物联网·无人机·智慧城市
武子康8 小时前
大数据-266 实时数仓 - Canal 对接 Kafka 客户端测试
java·大数据·数据仓库·分布式·kafka
lisacumt8 小时前
【flink-cdc】flink-cdc 3版本debug启动pipeline任务,mysql-doris
大数据·mysql·flink
heheha_zj8 小时前
Flume拦截器的实现
大数据·flume
橙子 chen9 小时前
工具函数 - 调用http
java·大数据·网络·数据库·python·网络协议·http
lusklusklusk9 小时前
ES_如何设置ElasticSearch 8.0版本的匿名访问以及https_http模式的互相切换
elasticsearch
weixin_307779139 小时前
AWS EMR基础知识
大数据·spark·云计算
AI趋势预见9 小时前
FinDKG: 用于检测金融市场全球趋势的动态知识图谱与大型语言模型
大数据·人工智能·机器学习·金融·storm
ZStack开发者社区11 小时前
浙江中医药大学携手云轴科技ZStack荣获“鼎信杯”金鼎实践奖
大数据·人工智能·科技