ElasticSearch-集成ik分词器
目录
- 背景介绍
- 版本选择
- 优势说明
- 集成过程
- 1.下载安装包
- 2.解压安装包
- 3.重启ElasticSearch服务
- 3.1通过ps -ef | grep elastic查看正在启动的es进程号
- 3.2使用kill -9 xxx 杀死进程
- 3.3使用 ./elasticsearch 启动es服务
- 分词测试
- 细粒度分词方式
- 分词请求
- 分词结果
- 粗粒度分词方式
- 分词请求
- 分词结果
- 项目中
- 代码
- 结果
- 总结提升
背景介绍
我们在项目中集成了ElasticSearch服务之后,需要对内容进行分词处理。这时候就需要用到分词器。其实ElasticSearch服务自身也会带有分词器。ElasticSearch服务自带的分词器是单个字进行分的。在我们的业务当中要求对整个词进行拆分。这时候就用到了ik分词器。ik分词器是词库分词的分词方式。当然根据我们的业务不同还可以选择其他的分词器。
版本选择

优势说明
Elasticsearch的IK分词器是一种流行的中文分词器,它有以下几个优势:
- 「 中文分词 」:IK分词器专门用于处理中文文本,能够将连续的中文字符序列切分成有意义的词语。它支持细粒度和智能切分两种分词模式,可以根据需求选择合适的模式。
- 「 高效性能 」:IK分词器在分词速度和内存占用方面具有较高的性能。它采用了基于词典的分词算法和N-gram模型,能够快速准确地进行分词处理。
- 「支持扩展词典 」:IK分词器允许用户自定义扩展词典,可以添加特定的词汇,如专业术语、品牌名等,以提高分词的准确性和覆盖范围。
- 「支持拼音分词」:IK分词器还提供了拼音分词功能,可以将中文文本转换成拼音,并进行分词处理。这对于拼音搜索和拼音排序等场景非常有用。
- 「多语言支持」:除了中文,IK分词器还支持其他语言的分词处理,如英文、日文等。它可以根据不同的语言特点进行相应的分词处理,提高搜索的准确性和效果。
集成过程
1.下载安装包
ik地址:https://github.com/medcl/elasticsearch-analysis-ik/releases

2.解压安装包
解压并重命名为IK 将整个文件夹上传到es 中的 plugins 目录中
unzip elasticsearch-analysis-ik-7.6.1.zip

3.重启ElasticSearch服务
3.1通过ps -ef | grep elastic查看正在启动的es进程号
3.2使用kill -9 xxx 杀死进程
3.3使用 ./elasticsearch 启动es服务

分词测试
细粒度分词方式
分词请求
POST test002/_analyze?pretty=true{
"text":"我们是软件工程师",
"tokenizer":"ik_max_word"
}
分词结果
{"tokens": [{"token": "我们","start_offset": 0,"end_offset": 2,"type": "CN_WORD","position": 0},{"token": "是","start_offset": 2,"end_offset": 3,"type": "CN_CHAR","position": 1},{"token": "软件工程","start_offset": 3,"end_offset": 7,"type": "CN_WORD","position": 2},{"token": "软件","start_offset": 3,"end_offset": 5,"type": "CN_WORD","position": 3},{"token": "工程师","start_offset": 5,"end_offset": 8,"type": "CN_WORD","position": 4},{"token": "工程","start_offset": 5,"end_offset": 7,"type": "CN_WORD","position": 5},{"token": "师","start_offset": 7,"end_offset": 8,"type": "CN_CHAR","position": 6}]
}
粗粒度分词方式
分词请求
POST test002/_analyze?pretty=true{
"text":"我们是软件工程师",
"tokenizer":"ik_max_word"
}
分词结果
这一次得到了分词的效果:
```json
{"tokens": [{"token": "我们","start_offset": 0,"end_offset": 2,"type": "CN_WORD","position": 0},{"token": "是","start_offset": 2,"end_offset": 3,"type": "CN_CHAR","position": 1},{"token": "软件","start_offset": 3,"end_offset": 5,"type": "CN_WORD","position": 2},{"token": "工程师","start_offset": 5,"end_offset": 8,"type": "CN_WORD","position": 3}]
}
项目中
代码
@Autowiredprivate RestHighLevelClient client;public void test() throws IOException {AnalyzeRequest analyzeRequest = AnalyzeRequest.withGlobalAnalyzer("ik_smart", "武梓龙来写CSDN博客来了");AnalyzeResponse analyze = client.indices().analyze(analyzeRequest, RequestOptions.DEFAULT);for (AnalyzeResponse.AnalyzeToken token : analyze.getTokens()) {System.out.println(token.getTerm());}}
示例是将一段话进行分词操作,其中withGlobalAnalyzer方法的第一个参数是指定分词器ik_smart分词器(当然也可以使用其他分词器,根据业务的需求进行调整) 是es服务中安装了IK的插件实现的,如果不安装IK分词器的插件ik_smart分词器是无法使用的。第二个参数就是我们分词的内容了。
结果

总结提升
IK分词器在中文分词方面具有较好的准确性和性能,支持自定义词典和拼音分词,适用于各种中文搜索和分析场景。它是Elasticsearch中常用的中文分词器之一。
相关文章:
ElasticSearch-集成ik分词器
本文已收录于专栏 《中间件合集》 目录 背景介绍版本选择优势说明集成过程1.下载安装包2.解压安装包3.重启ElasticSearch服务3.1通过ps -ef | grep elastic查看正在启动的es进程号3.2使用kill -9 xxx 杀死进程3.3使用 ./elasticsearch 启动es服务 分词测试细粒度分词方式分词请…...
c++版opencv求二值图的质心
代码 #include <iostream> #include <opencv2/core.hpp> #include <opencv2/highgui.hpp> #include <opencv2/imgproc.hpp>int main(int argc, char* argv[]) {cv::Mat input_image cv::imread("Untitled.png", cv::IMREAD_GRAYSCALE);cv:…...
6、深入解析Kotlin类与对象:构造、伴生、单例全面剖析
前言 本篇文章将带您了解Kotlin编程中的重要概念:类及构造函数、访问修饰符、伴生对象和单例模式。就像搭积木一样,我们会逐步揭开这些概念的面纱,让您轻松理解它们的作用和用法。无论您是编程新手还是有经验的开发者,本文都将为…...
【开源ESP32谷歌恐龙小游戏】【游戏演示和介绍】LVGL ST7789 适用于Arduino
【源码及教程地址-持续更新】 ESP32 C3 LVGL 迷你小电视 Google谷歌恐龙小游戏 1.9寸LCD显示屏开发板 ST7789 适用于Arduino开发板,教程,资料,程序,代码,PDF手册 【开源 & ESP32谷歌恐龙小游戏】【游戏演示和介绍】LVGL ST7789 适用于Arduin...
openCV实战-系列教程7:轮廓检测2与模板匹配(轮廓检测/轮廓特征/轮廓近似/轮廓边界矩阵/轮廓边界圆/模版匹配)、原理解析、源码解读
🧡💛💚💙💜OpenCV实战系列总目录 打印一个图片可以做出一个函数: def cv_show(img,name):cv2.imshow(name,img)cv2.waitKey()cv2.destroyAllWindows() 1、轮廓特征与近似 1.1 轮廓特征 前面我们计算了…...
cs231n_1_IntroToConv
参考的视频来自如下链接https://www.bilibili.com/video/BV1Ed4y1b7bm/ 参考笔记如下https://blog.csdn.net/TeFuirnever/article/details/89059673 x.1 CV历史 生物快速发展于5.4亿年前,那时的化石显示生物进化出了视觉,视觉使得生物多样性大爆炸。 …...
OPENCV实现SURF特征检测
1、SURF优点:SIFT速度慢,一次出现了SURF;2、使用SURF步骤:surf = cv2.xfeatures2d.SURF_create()kp,des = surf.detectAndComputer(img,mask)# -*- coding:utf-8 -*- """ 作者:794919561 日期:2023/8/31 """# -*-...
Android Gradle 同步优化
作者:究极逮虾户 很多人听到方法论三个字,就觉得我要开始pua,说我阿里味,但是我觉得这个查问题的方式可能会对大家有点帮助。 很多人都会有这样的困扰,给你的一个工作内容是一个你完全陌生的东西,第一选择…...
BeautifulSoup:学习使用BeautifulSoup库进行HTML解析和数据提取。
BeautifulSoup是一个用于解析HTML和XML文档的Python库。它可以帮助我们从网页中提取数据,并以易于操作的方式进行分析。 以下是使用BeautifulSoup进行HTML解析和数据提取的基本语法: 安装BeautifulSoup库:首先,你需要在你的Python…...
基于沙猫群算法优化的BP神经网络(预测应用) - 附代码
基于沙猫群算法优化的BP神经网络(预测应用) - 附代码 文章目录 基于沙猫群算法优化的BP神经网络(预测应用) - 附代码1.数据介绍2.沙猫群优化BP神经网络2.1 BP神经网络参数设置2.2 沙猫群算法应用 4.测试结果:5.Matlab代…...
PCL 判断三点共线(三维空间)
文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 继续之前的思路PCL 判断两条线段的平行性(三维空间),我们可以把判断三点共线看做是判断两条线段是否具有平行性,且这两条线段共用其中一个端点,基于此当这两条线段平行时,则证明这三点共线。 二、实现代码 /…...
【数据库】事务(概念和特点)
一、 什么是事务: 事务是在数据库中执行的一系列操作单元,这些操作要么全部成功提交,要么全部失败回滚。 二、事务的特点: 原子性(Atomicity):事务是一个不可分割的操作单元,要么…...
LA@齐次线性方程组解的结构
文章目录 齐次线性方程组解的结构🎈解的性质齐次线性方程组的解的线性组合还是方程组的解基础解系通解 定理:齐次线性方程组基础解系存在定理齐次线性方程组的基础解系包含的向量个数(秩)👺应用和示例推论1推论2推论3:转置矩阵对的乘积秩的性质非自由未知…...
Docker修改容器ulimit的全部方案及各方案的详细步骤
要修改Docker容器的ulimit(用户资源限制),有以下三种方案,每个方案的详细步骤如下: 方案一:在Dockerfile中设置ulimit 打开您的Dockerfile。在文件中添加以下命令来修改ulimit:RUN ulimit -n …...
进程间通信-Binder
Binder Binder框架概述服务端Binder驱动客户端 设计服务端和客户端设计服务端客户端设计 Binder与ServiceServiceAIDL 保证包裹内参数顺序IMusicPlayerServiceProxyStub 系统服务中的Binder对象ServiceManger管理的服务理解Manger功能快捷键合理的创建标题,有助于目…...
一个简单的vim例子
一.欢迎来到我的酒馆 在本章节介绍vim工具。 目录 一.欢迎来到我的酒馆二.什么是vim三.开始使用vim 二.什么是vim 2.1什么是vim vim是一种Linux命令行类型的文本编辑器。vim指的是"vi improved",意思是vi工具的升级版。vim是基于vi实现的&#x…...
sql server 备份到网络共享
场景:sql server服务器A将数据库备份文件备份到服务器B 1)服务器B创建共享目录 这里我将 D:\ProDbBak 共享,并且Everyone完全控制 2)sql server服务器A能够访问服务器B共享目录,并且能完全控制 3)修改服务…...
程序与进程
一、程序是怎么被执行的 1.在程序中,由引导代码去调用程序中得main函数,而这个过程由链接器完成,链接器将引导代码链接到我们的应用程序构成可执行文件。 2.程序运行需要通过操作系统的加载器来实现,加载器是操作系统中的程序&a…...
大模型从入门到应用——LangChain:链(Chains)-[链与索引:图问答(Graph QA)和带来源的问答(QA with Sources)]
分类目录:《大模型从入门到应用》总目录 图问答(Graph QA) 创建图 在本节中,我们构建一个示例图。目前,这对于较小的文本片段效果最好,下面的示例中我们只使用一个小片段,因为提取知识三元组对…...
spark sql 数据倾斜--join 同时开窗去重的问题优化
spark sql 数据倾斜–join 同时开窗去重的问题优化 文章目录 spark sql 数据倾斜--join 同时开窗去重的问题优化结论1. 原方案:join步骤时,同时开窗去重数据倾斜 2. 优化2.1 参数调优2.2 SQL优化 背景: 需求:在一张查询日志表中&a…...
如何快速掌握这款免费音乐歌词工具:3分钟搞定全网歌词批量下载与格式转换
如何快速掌握这款免费音乐歌词工具:3分钟搞定全网歌词批量下载与格式转换 【免费下载链接】163MusicLyrics Windows 云音乐歌词获取【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 在数字音乐时代,你是否遇…...
【数字电路基础】三态门在芯片设计中的关键作用与限制
1. 三态门:数字电路中的交通警察 第一次听说三态门时,我脑海里浮现的是十字路口的红绿灯。这个看似简单的数字电路元件,实际上在芯片设计中扮演着至关重要的角色。三态门之所以特殊,是因为它比普通逻辑门多了一个"隐身"…...
老Mac升级指南:使用OpenCore Legacy Patcher让旧设备焕发新生
老Mac升级指南:使用OpenCore Legacy Patcher让旧设备焕发新生 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 随着苹果对旧款Mac的系统支持逐渐终止࿰…...
全网最全!网络安全全岗位解析(2026版)
全网最全!网络安全全岗位解析(2026版) 摘要:随着数字化转型加速,网络安全已成为企业、政务、互联网大厂的核心刚需,人才缺口持续扩大,2026年国内网络安全人才缺口已突破327万,全球缺…...
模拟IC设计中的‘效率’权衡:深入理解gm/ID如何平衡增益、带宽与噪声
模拟IC设计中的‘效率’权衡:深入理解gm/ID如何平衡增益、带宽与噪声 在模拟电路设计的浩瀚海洋中,gm/ID参数犹如一座灯塔,指引着工程师们在增益、带宽与噪声的复杂权衡中寻找最优解。这个看似简单的比值背后,蕴含着晶体管工作的…...
需求分析避坑指南:如何避免‘用户说要马实际要车’的经典陷阱?
需求分析避坑指南:如何避免‘用户说要马实际要车’的经典陷阱? 在软件开发领域,需求分析是项目成败的关键环节。据统计,约70%的项目失败源于需求不明确或理解偏差。当用户说"想要一匹更快的马"时,他们真正需…...
Keil4 STC15浮点运算踩坑实录:如何避免数据类型转换导致的诡异错误
Keil4 STC15浮点运算避坑指南:从原理到实战的数据类型陷阱解析 在嵌入式开发领域,STC15系列单片机凭借其优异的性价比和丰富的功能接口,成为许多中小型项目的首选。然而当开发者使用Keil4这一经典但略显陈旧的开发环境时,常常会遇…...
机器人中的多模态——RoboBrain
论文下载地址:arxiv.org/pdf/2502.21257 代码地址:https://github.com/FlagOpen/RoboBrain/ 数据集下载地址:https://github.com/FlagOpen/ShareRobot/ 目录1.关于RoboBrain1.1 RoboBrain的潜在应用场景1.2 RoboBrain具备哪些能力2.关于Share…...
签名计算效率工具:xhshow实现小红书API请求处理提速90%的技术原理揭秘
签名计算效率工具:xhshow实现小红书API请求处理提速90%的技术原理揭秘 【免费下载链接】xhshow 小红书xs纯算 小红书56版本xs 小红书个人主页 批量爬取数据 文章批量下载 小红书x-s x-t x-s-common x-b3-traceid search-id 旋转验证码参数纯算纯协议逆向 项目地址…...
Auto-Photoshop-StableDiffusion-Plugin中文适配终极指南:让AI绘画更懂中文用户
Auto-Photoshop-StableDiffusion-Plugin中文适配终极指南:让AI绘画更懂中文用户 【免费下载链接】Auto-Photoshop-StableDiffusion-Plugin A user-friendly plug-in that makes it easy to generate stable diffusion images inside Photoshop using either Automat…...
