ElasticSearch 添加IK分词器

news2024/11/12 15:31:37

ElasticSearch 添加IK分词器

  • 前言
  • 一、IK分词器的算法
  • 二、Ik分词器的下载安装(Winows 版本)
  • 三、Ik分词器的下载安装(Linux 版本)
  • 四、验证测试(postman工具)
    • 测试 ik_smart 分词算法
    • 测试 ik_max_word 分词算法
    • 扩展字典

前言

  1. Elasticsearch(ES)内置携带了多种类型的分词器,而Standard Analyzer(单字分词)只是其中之一,并且是默认使用的分词器。
  2. IK分词器是一个专门为中文文本设计的分词工具,它不是ES的内置组件,而是一个需要单独安装和配置的插件。
  3. 在Elasticsearch中,IK分词器和Standard Analyzer是并存的关系,它们并不会互相排斥或覆盖
  4. 在Elasticsearch中,当你在创建索引时为某个字段指定了特定的分词器(比如中文分词器IK Analyzer),那么这个分词器就会被应用于该字段的文本数据,在后续的索引和查询过程中都会使用这个分词器来处理该字段的文本。
    如果你没有为字段指定分词器,Elasticsearch会使用该字段类型默认的分词器。对于文本(text)类型的字段,默认的分词器通常是Standard Analyzer,它适用于大多数英文文本的分词处理,但不适用于中文等需要特殊分词处理的文本。

一、IK分词器的算法

IK提供了两个分词算法:ik_smart和ik_max_word,其中ik smart为最少切分,ik_max_word为最细粒度划分!

ik_max_word: 会将文本做最细粒度的拆分,比如会将"中华人民共和国国歌"拆分为"中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌",会穷尽各种可能的组合;

ik_smart: 会做最粗粒度的拆分,比如会将"中华人民共和国国歌"拆分为"中华人民共和国,国歌"。

二、Ik分词器的下载安装(Winows 版本)

下载地址: https://github.com/medcl/elasticsearch-analysis-ik

在这里插入图片描述

注意:IK分词器插件的版本要和ElasticSearch的版本一致

我这边是v7.15.2的
在这里插入图片描述

解压安装包到 ElasticSearch 所在文件夹中的plugins目录中:

在这里插入图片描述

Windows 环境下 再启动ElasticSearch,查看IK分词器插件是否安装成功:

在这里插入图片描述

三、Ik分词器的下载安装(Linux 版本)

下载地址: https://github.com/medcl/elasticsearch-analysis-ik

在这里插入图片描述

注意:IK分词器插件的版本要和ElasticSearch的版本一致

我这边是v7.15.2的
在这里插入图片描述

需要在plugins目录下创建ik分词器文件夹(文件夹名称一定要命名为ik,不然启动elasticsearch时候会报错的),然后在把里面的东西解压放在这个ik下面,如下:
在这里插入图片描述
解压完ik分词器安装包后,重启elasticsearch。

四、验证测试(postman工具)

使用postman工具校验

测试 ik_smart 分词算法

分词请求+入参:

请求:
http://127.0.0.1:9200/_analyze

入参:
{
  "analyzer": "ik_smart",
  "text": "海内存知己,天涯若比邻"
}

结果如下所示:
在这里插入图片描述

测试 ik_max_word 分词算法

分词请求+入参:

请求:
http://127.0.0.1:9200/_analyze

入参:
{
  "analyzer": "ik_max_word",
  "text": "海内存知己,天涯若比邻"
}

结果如下所示:
在这里插入图片描述

比较两个分词算法对同一句中文的分词结果,ik_max_word比ik_smart得到的中文词更多(从两者的英文名含义就可看出来),但这样也带来一个问题,使用ik_max_word会占用更多的存储空间。

扩展字典

从上面的举例来看,我使用 ik_max_word 算法时,分词里面没有“存知己”这个词,如果我想加该怎么办,这个时候就涉及了扩展字典的操作了。

第一步:
在ik分词器文件的config目录中新建自定义的字典文件,以.dic为后缀,并在文件中加入“存知己”
在这里插入图片描述
第二步:
然后打开 IKAnalyzer.cfg.xml 文件,把自定义的字典添加到IK的字典中:
在这里插入图片描述
第三步:
重启ES,再次测试,就发现有了“存知己”这个词了
在这里插入图片描述

参考文章
【1】ElasticSearch——IK分词器的下载及使用
【2】Elasticsearch和Kibana版本对应关系
【3】ElasticSearch在linux环境中集成IK分词器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2237077.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

aws(学习笔记第十一课) 使用AWS的EFS,以及AWS Storage Gateway

aws(学习笔记第十一课) 使用AWS的EFS和AWSStorage Gateway 学习内容: 使用AWS的EFS使用AWS Storage Gateway 1. 使用AWS的EFS 什么是EFS EFS是 Elastic File System的缩写。前面练习的实例存储和EBS都是同时只能一个EC2实例进行挂载,不能实现多个EC2实…

Diffusion Policy——斯坦福刷盘机器人UMI所用的扩散策略(含Diff-Control、ControlNet详解)

前言 本文一开始是属于此文《UMI——斯坦福刷盘机器人:从手持夹持器到动作预测Diffusion Policy(含代码解读)》的第三部分,考虑后Diffusion Policy的重要性很高,加之后续还有一系列基于其的改进工作 故独立成本文,且把原属于另一…

计算机毕业设计 | SpringBoot慈善公益平台 爱心互助活动发布管理系统(附源码)

1,项目介绍 爱慈善公益平台(love-charity)是一个基于 SpringBoot 开发的标准 Java Web 项目。整体页面非常的简约大气,项目的完整度较高,是一个偏向公益论坛的系统。非常适合刚刚接触学习 SpringBoot 的技术小白学习&…

【深入浅出】之Linux进程(二)

📃博客主页: 小镇敲码人 💚代码仓库,欢迎访问 🚀 欢迎关注:👍点赞 👂🏽留言 😍收藏 🌏 任尔江湖满血骨,我自踏雪寻梅香。 万千浮云遮碧…

bert-base-chinese模型使用教程

向量编码和向量相似度展示 import torch from transformers import BertTokenizer, BertModel import numpy as npmodel_name "C:/Users/Administrator.DESKTOP-TPJL4TC/.cache/modelscope/hub/tiansz/bert-base-chinese"sentences [春眠不觉晓, 大梦谁先觉, 浓睡…

Qt/C++ 海康SDK开发示例Demo

*** 工业相机在机器视觉中起到关键作用,本文基于海康 SDK 详细解读了设备连接与控制的各个步骤。内容涵盖设备枚举、句柄创建、图像采集回调以及设备异常处理,帮助开发者快速理解如何通过代码控制相机,实时采集并处理图像数据。*** 1. 搜索并…

RabbitMQ的应用

七种工作模式介绍 1.Simple(简单模式) P:生产者,也就是要发送信息的程序 C:消费者,消息的接收者 Queue:消息队列。图中黄色背景部分,类似一个邮箱,可以缓存发送信息;生产者向其中…

K8S网络插件故障处理

1网络插件故障 1此故障问题处理方法 查询ip是否正常是否是主节点IP地址如果不是需要更改 更改方式 1 修改calico.yaml文件的相应参数 # Cluster type to identify the deployment type - name: IP_AUTODETECTION_METHOD #增加内容value: "interfaceens*" 或者 value…

【论文速看】DL最新进展20241109-图像超分、物理信息神经网络、扩散模型

目录 【图像超分】【物理信息神经网络】【扩散模型】 【图像超分】 [2024 红外图像超分] Infrared Image Super-Resolution via Lightweight Information Split Network 论文链接:https://arxiv.org/pdf/2405.10561v2 代码链接:无 单图像超分辨率&…

Python学习从0到1 day26 第三阶段 Spark ① 数据输入

要学会 剥落旧痂 然后 循此新生 —— 24.11.8 一、Spark是什么 定义: Apache Spark 是用于大规模数据处理的统一分析引擎 简单来说,Spark是一款分布式的计算框架,用于调度成百上千的服务器集群,计算TB、PB乃至EB级别的海量数据…

[Python学习日记-63] 继承与派生

[Python学习日记-63] 继承与派生 简介 继承 派生 简介 上一篇文章我们学习了类如何使用,以及相关特性,也做了相关的练习,在练习当中发现类与类之间有时也会存在重复代码,其实在类中我们还有一个继承和派生的概念没有说&#xf…

基于 Encoder-only 架构的大语言模型

基于 Encoder-only 架构的大语言模型 Encoder-only 架构 Encoder-only 架构凭借着其独特的双向编码模型在自然语言处理任务中表现出色,尤其是在各类需要深入理解输入文本的任务中。 核心特点:双向编码模型,能够捕捉全面的上下文信息。 En…

Python学习------第四天

Python的判断语句 一、布尔类型和比较运算符 二、 if语句的基本格式 if语句注意空格缩进!!! if else python判断语句的嵌套用法:

uniapp实现H5和微信小程序获取当前位置(腾讯地图)

之前的一个老项目,使用 uniapp 的 uni.getLocation 发现H5端定位不准确,比如余杭区会定位到临平区,根据官方文档初步判断是项目的uniapp的版本太低。 我选择的方式不是区更新uniapp的版本,是直接使用高德地图的api获取定位。 1.首…

测试网空投进行中 — 全面了解 DePIN 赛道潜力项目 ICN Protocol 及其不可错过的早期红利

随着云计算技术的飞速发展,越来越多的企业和个人对云服务的需求变得多样化且复杂化。然而,传统的中心化云服务平台(如AWS、微软Azure等)往往存在着高成本、数据隐私保护不足以及灵活性差等问题。 为了解决这些挑战,Imp…

IntelliJ IDEA 使用心得与常用快捷键

刚开始学习写Java的时候,用的eclipse,正式工作后,主要用的myeclipse,去年初在前辈的推荐下,在2折的时候买了正版的 IntelliJ IDEA 和 Pycharm,12.0版终生使用,一年更新。 使用前早就久闻其名&am…

【rust】rust基础代码案例

文章目录 代码篇HelloWorld斐波那契数列计算表达式(加减乘除)web接口 优化篇target/目录占用一个g,仅仅一个actix的helloWorld demo升级rust版本, 通过rustupcargo换源windows下放弃吧,需要额外安装1g的toolchain并且要…

施工企业为什么要用工程项目管理软件?工程项目管理软件的用处是什么?

施工企业一定会遇到哪些问题?工人怠工、材料浪费、数据造假、工期拖延、质量问题、安全隐患等。这些问题正在悄然侵蚀建施工业的经济效益。每一个环节的失控都可能导致巨大的经济损失,还可能损害企业的声誉。面对日益复杂的工程管理环境,如何…

【C++】详解RAII思想与智能指针

🌈 个人主页:谁在夜里看海. 🔥 个人专栏:《C系列》《Linux系列》 ⛰️ 丢掉幻想,准备斗争 目录 引言 内存泄漏 内存泄漏的危害 内存泄漏的处理 一、RAII思想 二、智能指针 1.auto_ptr 实现原理 模拟实现 弊端…

所谓的情商高,其实就是会说话!

所谓的情商高,其实就是会说话! 1.当遇到不知道的事情时,不要直截了当地说“不知道”。而应委婉地表达为“我想听听你的看法”。 如此既能避免尴尬,又能展现出对对方见解的尊重和期待。 2.不要简单地说“我迟到了”,…