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

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编程中的重要概念&#xff1a;类及构造函数、访问修饰符、伴生对象和单例模式。就像搭积木一样&#xff0c;我们会逐步揭开这些概念的面纱&#xff0c;让您轻松理解它们的作用和用法。无论您是编程新手还是有经验的开发者&#xff0c;本文都将为…...

【开源ESP32谷歌恐龙小游戏】【游戏演示和介绍】LVGL ST7789 适用于Arduino

【源码及教程地址-持续更新】 ESP32 C3 LVGL 迷你小电视 Google谷歌恐龙小游戏 1.9寸LCD显示屏开发板 ST7789 适用于Arduino开发板,教程,资料,程序,代码,PDF手册 【开源 & ESP32谷歌恐龙小游戏】【游戏演示和介绍】LVGL ST7789 适用于Arduin...

openCV实战-系列教程7:轮廓检测2与模板匹配(轮廓检测/轮廓特征/轮廓近似/轮廓边界矩阵/轮廓边界圆/模版匹配)、原理解析、源码解读

&#x1f9e1;&#x1f49b;&#x1f49a;&#x1f499;&#x1f49c;OpenCV实战系列总目录 打印一个图片可以做出一个函数&#xff1a; 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亿年前&#xff0c;那时的化石显示生物进化出了视觉&#xff0c;视觉使得生物多样性大爆炸。 …...

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 同步优化

作者&#xff1a;究极逮虾户 很多人听到方法论三个字&#xff0c;就觉得我要开始pua&#xff0c;说我阿里味&#xff0c;但是我觉得这个查问题的方式可能会对大家有点帮助。 很多人都会有这样的困扰&#xff0c;给你的一个工作内容是一个你完全陌生的东西&#xff0c;第一选择…...

BeautifulSoup:学习使用BeautifulSoup库进行HTML解析和数据提取。

BeautifulSoup是一个用于解析HTML和XML文档的Python库。它可以帮助我们从网页中提取数据&#xff0c;并以易于操作的方式进行分析。 以下是使用BeautifulSoup进行HTML解析和数据提取的基本语法&#xff1a; 安装BeautifulSoup库&#xff1a;首先&#xff0c;你需要在你的Python…...

基于沙猫群算法优化的BP神经网络(预测应用) - 附代码

基于沙猫群算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于沙猫群算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.沙猫群优化BP神经网络2.1 BP神经网络参数设置2.2 沙猫群算法应用 4.测试结果&#xff1a;5.Matlab代…...

PCL 判断三点共线(三维空间)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 继续之前的思路PCL 判断两条线段的平行性(三维空间),我们可以把判断三点共线看做是判断两条线段是否具有平行性,且这两条线段共用其中一个端点,基于此当这两条线段平行时,则证明这三点共线。 二、实现代码 /…...

【数据库】事务(概念和特点)

一、 什么是事务&#xff1a; 事务是在数据库中执行的一系列操作单元&#xff0c;这些操作要么全部成功提交&#xff0c;要么全部失败回滚。 二、事务的特点&#xff1a; 原子性&#xff08;Atomicity&#xff09;&#xff1a;事务是一个不可分割的操作单元&#xff0c;要么…...

LA@齐次线性方程组解的结构

文章目录 齐次线性方程组解的结构&#x1f388;解的性质齐次线性方程组的解的线性组合还是方程组的解基础解系通解 定理:齐次线性方程组基础解系存在定理齐次线性方程组的基础解系包含的向量个数(秩)&#x1f47a;应用和示例推论1推论2推论3:转置矩阵对的乘积秩的性质非自由未知…...

Docker修改容器ulimit的全部方案及各方案的详细步骤

要修改Docker容器的ulimit&#xff08;用户资源限制&#xff09;&#xff0c;有以下三种方案&#xff0c;每个方案的详细步骤如下&#xff1a; 方案一&#xff1a;在Dockerfile中设置ulimit 打开您的Dockerfile。在文件中添加以下命令来修改ulimit&#xff1a;RUN ulimit -n …...

进程间通信-Binder

Binder Binder框架概述服务端Binder驱动客户端 设计服务端和客户端设计服务端客户端设计 Binder与ServiceServiceAIDL 保证包裹内参数顺序IMusicPlayerServiceProxyStub 系统服务中的Binder对象ServiceManger管理的服务理解Manger功能快捷键合理的创建标题&#xff0c;有助于目…...

一个简单的vim例子

一.欢迎来到我的酒馆 在本章节介绍vim工具。 目录 一.欢迎来到我的酒馆二.什么是vim三.开始使用vim 二.什么是vim 2.1什么是vim vim是一种Linux命令行类型的文本编辑器。vim指的是"vi improved"&#xff0c;意思是vi工具的升级版。vim是基于vi实现的&#x…...

sql server 备份到网络共享

场景&#xff1a;sql server服务器A将数据库备份文件备份到服务器B 1&#xff09;服务器B创建共享目录 这里我将 D:\ProDbBak 共享&#xff0c;并且Everyone完全控制 2&#xff09;sql server服务器A能够访问服务器B共享目录&#xff0c;并且能完全控制 3&#xff09;修改服务…...

程序与进程

一、程序是怎么被执行的 1.在程序中&#xff0c;由引导代码去调用程序中得main函数&#xff0c;而这个过程由链接器完成&#xff0c;链接器将引导代码链接到我们的应用程序构成可执行文件。 2.程序运行需要通过操作系统的加载器来实现&#xff0c;加载器是操作系统中的程序&a…...

大模型从入门到应用——LangChain:链(Chains)-[链与索引:图问答(Graph QA)和带来源的问答(QA with Sources)]

分类目录&#xff1a;《大模型从入门到应用》总目录 图问答&#xff08;Graph QA&#xff09; 创建图 在本节中&#xff0c;我们构建一个示例图。目前&#xff0c;这对于较小的文本片段效果最好&#xff0c;下面的示例中我们只使用一个小片段&#xff0c;因为提取知识三元组对…...

spark sql 数据倾斜--join 同时开窗去重的问题优化

spark sql 数据倾斜–join 同时开窗去重的问题优化 文章目录 spark sql 数据倾斜--join 同时开窗去重的问题优化结论1. 原方案&#xff1a;join步骤时&#xff0c;同时开窗去重数据倾斜 2. 优化2.1 参数调优2.2 SQL优化 背景&#xff1a; 需求&#xff1a;在一张查询日志表中&a…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...

GitHub 趋势日报 (2025年06月06日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...

PHP 8.5 即将发布:管道操作符、强力调试

前不久&#xff0c;PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5&#xff01;作为 PHP 语言的又一次重要迭代&#xff0c;PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是&#xff0c;借助强大的本地开发环境 ServBay&am…...