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

Elasticsearch分词器-中文分词器ik

文章目录

  • 使用standard analysis对英文进行分词
  • 使用standard analysis对中文进行分词
  • 安装插件对中文进行友好分词-ik中文分词器
    • 下载安装和配置IK分词器
    • 使用ik_smart分词器
    • 使用ik_max_word分词器
  • 借助Nginx实现ik分词器自定义分词网络新词

ES官方文档Text Analysis

使用standard analysis对英文进行分词

ES默认使用standard analysis;如下可以使用POST _analyze测试standard analysis是如何分词的

POST _analyze
{"analyzer": "standard","text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
}

该API会将文本内容分词成如下单词

[ the, 2, quick, brown, foxes, jumped, over, the, lazy, dog's, bone ]

使用standard analysis对中文进行分词

默认的 standard analysis 对每个汉字进行了分词,显然这不是我们所期望
在这里插入图片描述

安装插件对中文进行友好分词-ik中文分词器

下载安装和配置IK分词器

1、下载ik分词器
gitHub下载地址,找到和当前ES匹配的版本,ik的版本是跟着ES走的。
2、使用wget命令下载zip包
也不局限于这一种方式,只要能把zip下载并上传到服务器上怎么样都行

wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.14.0/elasticsearch-analysis-ik-7.14.0.zip

3、在plugins目录下创建ik文件夹,unzip命令进行解压到ES的plugins/ik目录

# 将zip包解压到指定的目录/home/es-kibana/volume/plugin/ik下,并不覆盖已有的文件
unzip -n elasticsearch-analysis-ik-7.14.0.zip -d /home/es-kibana/volume/plugins/ik

因为本人使用Docker安装ES,并在docker run的时候将plugins挂载到了宿主机的 /home/es-kibana/volume/plugins目录下;所以就直接在该目录下创建ik文件夹,并执行上面的解压命令
4、进入容器内部查询plugin list,确认ik安装成功

# 进入容器内部
[root@VM-8-3-opencloudos ik]# docker exec -it b72e9104d50a /bin/bash
# 也可以先看看宿主机plugins目录下的东西是否成功映射给容器内的plugins
[root@b72e9104d50a elasticsearch]# ls
bin  config  data  jdk	lib  LICENSE.txt  logs	modules  NOTICE.txt  plugins  README.asciidoc
# 进入bin,查看plugin列表
[root@b72e9104d50a bin]# elasticsearch-plugin list

在这里插入图片描述

5、重新启动ES

6、前往kibana的控制台进行中文分词验证
ik提供了两种分词器

  • ik_smart
  • ik_max_word

使用ik_smart分词器

下图是使用ik_smart分词器的结果,显示将‘我是中国人’分词为[‘我’,‘是’,‘中国人’]
在这里插入图片描述

使用ik_max_word分词器

下面尝试使用ik_max_word分词器进行中文分词,它将‘我是中国人’这句中文进行最大限度的分词;结果为[‘我’,‘是’,‘中国人’,‘中国’,‘国人’]
在这里插入图片描述

借助Nginx实现ik分词器自定义分词网络新词

上面在ES中安装使用ik分词器完成了中文分词;但是在日常的生活中不断地会涌出各种各样新奇的网络热词,比如”尊嘟假嘟“、”绝绝子“、”爷青回“、”乔碧萝殿下“等等;这些词汇在ik中不存在,便会逐字分词;如果期望这些新兴的网络热词按照自己的意思进行分词该如何操作?如下图的效果这样
在这里插入图片描述
在这里插入图片描述
思路:ik的配置文件IKAnalyzer.cfg.xml中支持自定义配置远程扩展字典;将Nginx作为远程扩展字典
在这里插入图片描述

  • 自定义静态资源文件ik_analyze.txt;用来收录网络新词
  • 保证网络能正常访问ik_analyze.txt静态资源
  • 将ik_analyze.txt静态资源的访问路径配置给IKAnalyzer.cfg.xml文件中的entry标签

第一步、使用Nginx作为Ik的扩展分词库
首先保证Nginx可以正常访问;接着在Nginx的静态资源目录/html下自定义文件用来收录新词
在这里插入图片描述
并且该静态资源可以正常访问,如下图所示
在这里插入图片描述
第二步、配置ik的远程扩展字典
ik插件安装在ES的plugins目录下,在该目录下可以进入config目录,就可以看到IKAnalyzer.cfg.xml文件
在这里插入图片描述
对其进行编辑,如下;将ik_analyze.txt资源的访问路径配置其中即可
在这里插入图片描述
第三步、进行验证,可以看到”乔碧萝殿下“分词为[“乔碧萝”,“殿下”]

POST _analyze
{"analyzer": "ik_max_word","text": "乔碧萝殿下"
}

在这里插入图片描述

http://www.lryc.cn/news/206696.html

相关文章:

  • ITSS信息技术服务运行维护标准符合性证书申请详解及流程
  • Inbound marketing的完美闭环:将官网作为营销枢纽,从集客进化为入站
  • SQL On Pandas最佳实践
  • 如何批量给视频添加logo水印?
  • 数据挖掘和大数据的区别
  • Go之流程控制大全: 细节、示例与最佳实践
  • FLStudio2024最新破解版注册机
  • 【Overload游戏引擎细节分析】standard材质Shader
  • Leetcode—7.整数反转【中等】
  • lua-web-utils和proxy设置示例
  • 分享一下在微信小程序里怎么添加储值卡功能
  • 2023高频前端面试题-http
  • 图像识别在自动驾驶汽车中的多传感器融合技术
  • Kafka To HBase To Hive
  • python pandas.DataFrame 直接写入Clickhouse
  • 德语中第二虚拟式在主动态的形式,柯桥哪里可以学德语
  • [Python进阶] 消息框、弹窗:tkinter库
  • (免费领源码)java#Springboot#mysql装修选购网站99192-计算机毕业设计项目选题推荐
  • 生活废品回收系统 JAVA语言设计和实现
  • redhat/centos 配置本地yum源
  • FLStudio2024汉化破解版在哪可以下载?
  • Java 音频处理,音频流转音频文件,获取音频播放时长
  • Spring Boot发送邮件
  • 智慧矿山:AI算法助力!刮板机监测,生产效率和安全性提升!
  • Qt跨平台(统信UOS)各种坑解决办法
  • ORB-SLAM3算法1之Ubuntu18.04+ROS-melodic安装ORB-SLAM3及各种问题解决
  • git学习笔记之用命令行解决冲突
  • C语言中的内联汇编是什么?如何使用内联汇编进行底层编程?
  • react笔记基础部分(组件生命周期路由)
  • Sentinel授权规则和规则持久化