接上篇《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