当前位置: 首页 > 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中常用的中文分词器之一。

🎯 此文章对你有用的话记得留言+点赞+收藏哦🎯
http://www.lryc.cn/news/147922.html

相关文章:

  • c++版opencv求二值图的质心
  • 6、深入解析Kotlin类与对象:构造、伴生、单例全面剖析
  • 【开源ESP32谷歌恐龙小游戏】【游戏演示和介绍】LVGL ST7789 适用于Arduino
  • openCV实战-系列教程7:轮廓检测2与模板匹配(轮廓检测/轮廓特征/轮廓近似/轮廓边界矩阵/轮廓边界圆/模版匹配)、原理解析、源码解读
  • cs231n_1_IntroToConv
  • OPENCV实现SURF特征检测
  • Android Gradle 同步优化
  • BeautifulSoup:学习使用BeautifulSoup库进行HTML解析和数据提取。
  • 基于沙猫群算法优化的BP神经网络(预测应用) - 附代码
  • PCL 判断三点共线(三维空间)
  • 【数据库】事务(概念和特点)
  • LA@齐次线性方程组解的结构
  • Docker修改容器ulimit的全部方案及各方案的详细步骤
  • 进程间通信-Binder
  • 一个简单的vim例子
  • sql server 备份到网络共享
  • 程序与进程
  • 大模型从入门到应用——LangChain:链(Chains)-[链与索引:图问答(Graph QA)和带来源的问答(QA with Sources)]
  • spark sql 数据倾斜--join 同时开窗去重的问题优化
  • lv3 嵌入式开发-linux介绍及环境配置
  • RabbitMQ工作模式-路由模式
  • StringIO BytesIO
  • 通讯录管理系统(个人学习笔记黑马学习)
  • [SpringBoot3]远程访问@HttpExchange
  • Linux安装ntp并使用阿里云配置ntp服务器
  • js常用方法总结
  • 在PHP中安装Composer并管理Vue前端依赖包
  • 03-前端基础CSS-第一天
  • 多张图片转为pdf怎么弄?
  • jdk新版本特性