当前位置: 首页 > article >正文

【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分词器插件,分为以下几步:

# 进入容器内部
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的数据卷目录,通过下面命令查看:

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目录:

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查看启动日志:

# 4、重启容器
docker restart es
# 查看es日志
docker logs -f es

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

(5)测试

IK分词器包含两种模式:

ik_smart:最少切分
ik_max_word:最细切分
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

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

# 重启服务
docker restart es
docker restart kibana
# 查看 日志
docker logs -f es

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

3、测试效果

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

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


http://www.kler.cn/a/463607.html

相关文章:

  • [Qt] Qt介绍 | 搭建SDK
  • 实现一个通用的树形结构构建工具
  • 每日一学——监控工具(Grafana)
  • xilinx的高速接口构成原理和连接结构及ibert工具的使用-以k7 GTX为例
  • 【C语言】_指针运算
  • Codigger集成Copilot:智能编程助手
  • [最佳方法] 如何将视频从 Android 发送到 iPhone
  • Windows操作系统部署Tomcat详细讲解
  • LeetCode 3280.将日期转换为二进制表示:库函数实现或手动转换
  • 力扣第129题:求根到叶子节点数字之和 - C语言解法
  • 报错:nginx [emerg] open() etcnginxnginx.conf failed (2 No such file or directory)
  • 【网络协议】开放式最短路径优先协议OSPF详解(一)
  • WebRTC的三大线程
  • 设计模式の状态策略责任链模式
  • 【漫话机器学习系列】027.混淆矩阵(confusion matrix)
  • 计算机网络•自顶向下方法:DHCP、NAT、IPV6
  • 大模型WebUI:Gradio全解系列8——Additional Features:补充特性(下)
  • 如何将vCenter6.7升级7.0?
  • vSAN手动平衡磁盘
  • 对比一下Java和go的unsafe包
  • 【电路笔记】-德摩根定理
  • pycharm+anaconda创建项目
  • 短视频矩阵系统前端搭建技术解析,支持OEM
  • React之从0开始(1)
  • Nginx搭建Web网站
  • 玩转树莓派Pico(21): 迷你气象站7——软件整合改进2