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

Elasticsearch 核心技术(七):IK 中文分词器的安装、使用、自定义字典

在这里插入图片描述

❤️ 博客主页:水滴技术
🚀 支持水滴:点赞👍 + 收藏⭐ + 留言💬
🌸 订阅专栏:大数据核心技术从入门到精通

文章目录

  • 一、安装 IK 分词器
    • 方式一:自行下载并解压安装包
    • 方式二:通过 elasticsearch-plugin 安装
  • 二、使用 IK 分词器
    • ik_max_word
    • ik_smart
  • 三、自定义字典(分词)
    • 本地字典
    • 远程字典
  • 四、系列文章
  • 五、热门专栏


大家好,我是水滴~~

IK 中文分词器是 Elasticsearch 的一个插件,它集成了 Lucene IK analyzer,支持自定义字典。

一、安装 IK 分词器

安装 IK 分词器有两种方式,我们来看一下

方式一:自行下载并解压安装包

  1. 打开 IK 分词器的下载页:
    https://github.com/medcl/elasticsearch-analysis-ik/releases
  2. 选择与 Elasticsearch 相同的版本进行下载,我选择的是 v7.12.1
    在这里插入图片描述
  3. 在你的 Elasticsearch 的安装目录中,找到 plugins 文件,在里面创建一个 elasticsearch-analysis-ik-7.12.1 文件夹,并将下载的安装包解压到该文件夹中。
  4. 最后需要重启 Ealsticsearch 服务后,IK 分词器才能生效。

方式二:通过 elasticsearch-plugin 安装

  1. 同样打开 IK 分词器的下载页:
    https://github.com/medcl/elasticsearch-analysis-ik/releases
  2. 找到与 Elasticsearch 相同的版本,我选择的是 v7.12.1 ,复制下载地址。
    在这里插入图片描述
  3. 进入 Elasticsearch 安装目录,执行安装命令:.\bin\elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip
  4. 安装完后,别忘了重启 Elasticsearch 服务。

二、使用 IK 分词器

IK 分词器为我们提供了两种分析器: ik_smartik_max_word,我们分别来使用一下:

ik_max_word

ik_max_word 会将文本做最细粒度的拆分,它会穷尽各种可能的组合,适合 Term Query。

测试分词器:

POST /_analyze
{"analyzer": "ik_max_word","text": "中华人民共和国国歌"
}

分词结果:

[ 中华人民共和国, 中华人民, 中华, 华人, 人民共和国, 人民, 共和国, 共和,, 国歌 ]

ik_smart

ik_smart 会做最粗粒度的拆分,适合 Phrase Query。

测试分词器:

POST /_analyze
{"analyzer": "ik_smart","text": "中华人民共和国国歌"
}

分词结果:

[ 中华人民共和国, 国歌 ]

三、自定义字典(分词)

IK 分词器提供了一些扩展配置,可以使我们自定义一些字典。打开 IK分词器插件目录,进入 config 目录,其中 IKAnalyzer.cfg.xml 为 IK 分词器的扩展配置,而扩展名为 .dic 的文件为分词或停止词的词典文件。

在这里插入图片描述

本地字典

我们可以添加一个自己的字典文件,例如:mydict.dic ,该文件要求必须是 UTF-8 格式,每一行为一个分词,例如:

锐龙
酷睿

然后在 IKAnalyzer.cfg.xml 配置文件中,将自定义的字典文件名添加到 ext_dict 配置中,如果有多个文件,中间使用 ; 隔开:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties><comment>IK Analyzer 扩展配置</comment><!--用户可以在这里配置自己的扩展字典 --><entry key="ext_dict">mydict.dic</entry><!--用户可以在这里配置自己的扩展停止词字典--><entry key="ext_stopwords"></entry><!--用户可以在这里配置远程扩展字典 --><!-- <entry key="remote_ext_dict">words_location</entry> --><!--用户可以在这里配置远程扩展停止词字典--><!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

配置完后,需要重启 Elasticsearch 服务才能生效。

我做了一个测试,在配置自定义分词前,这句话“联想(Lenovo)小新Pro16 笔记本2023锐龙版”中的“锐龙”会被分隔开。

在这里插入图片描述
加上自定义的字典后,可以看出这两个字是一个词了。
在这里插入图片描述

远程字典

IKAnalyzer.cfg.xml 配置文件的注释中也可以看出,我们还可以配置远程扩展字典,即在remote_ext_dict 配置项中添加一个请求的地址,比如 http://127.0.0.1/getCustomDict,该请求的响应内容格式必须是一行一个分词,换行符使用 \n

如果想要实现热更新 IK 分词的话,该请求需要返回两个头部(header):一个是 Last-Modified,另一个是 ETag。这两个都是字符串类型,只要有一个发生变化,该插件就会去抓取新的分词进而更新词库。这样就可以在不重启 Elasticsearch 服务的情况下,完成词典的更新。

可以将需自动更新的热词放在一个 UTF-8 编码的 .txt 文件里,放在 nginx 或其他简易 http server 下,当 .txt 文件修改时,http server 会在客户端请求该文件时自动返回相应的 Last-Modified 和 ETag。可以另外做一个工具来从业务系统提取相关词汇,并更新这个 .txt 文件。

四、系列文章

🔥 Elasticsearch 核心技术(一):Elasticsearch 安装、配置、运行(Windows 版)
🔥 Elasticsearch 核心技术(二):elasticsearch-head 插件安装和使用
🔥 Elasticsearch 核心技术(三):Kibana 安装、配置、运行(Windows 版)
🔥 Elasticsearch 核心技术(四):索引管理、映射管理、文档管理(REST API)
🔥 Elasticsearch 核心技术(五):常用数据类型详解
🔥 Elasticsearch 核心技术(六):内置的 8 种分词器详解 + 代码示例

五、热门专栏

👍 《Python入门核心技术》
👍 《IDEA 教程:从入门到精通》
👍 《Java 教程:从入门到精通》
👍 《MySQL 教程:从入门到精通》
👍 《大数据核心技术从入门到精通》

在这里插入图片描述

相关文章:

Elasticsearch 核心技术(七):IK 中文分词器的安装、使用、自定义字典

❤️ 博客主页&#xff1a;水滴技术 &#x1f680; 支持水滴&#xff1a;点赞&#x1f44d; 收藏⭐ 留言&#x1f4ac; &#x1f338; 订阅专栏&#xff1a;大数据核心技术从入门到精通 文章目录一、安装 IK 分词器方式一&#xff1a;自行下载并解压安装包方式二&#xff1a;…...

【LeetCode】剑指 Offer(19)

目录 题目&#xff1a;剑指 Offer 36. 二叉搜索树与双向链表 - 力扣&#xff08;Leetcode&#xff09; 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 写在最后&#xff1a; 题目&#xff1a;剑指 Offer 36. …...

吐血整理,web自动化测试,POM模式搭建自动化测试框架(超级详细)

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 POM设计模式 主要是…...

【数据库原理复习】索引 视图 sql语句

这里写目录标题视图视图特点视图定义优点索引相关sql三种索引区别解释视图 视图特点 只是虚表&#xff0c;并不实际存放数据&#xff0c;所有数据都来自于基本表建立在一个或几个基本表或视图之上基本表数据变化视图也随之变化只保存视图定义等之类东西 视图定义 # 定义视图…...

【HDFS】IPC重试

1、IPC重试和dfs.client.retry重试的区别2、IPC重试的相关参数汇总及含义3、 IPC重试相关源码、原理简单总结一句话: IPC重试是因为连接问题而进行重试; 客户端重试是因为RPC在服务端处理发生异常,客户端根据指定的策略进行重试。 接下来让我们深入一下源码,因为每一部分源…...

Revit导出CAD图纸操作及批量导出

一、Revit如何导出CAD格式图纸 1.打开Revit模型。 2.项目浏览器&#xff0c;图纸(全部)&#xff0c;鼠标右键点击&#xff0c;新建图纸。 3.选择自己需要的图纸大小&#xff0c;点击“确定”&#xff0c;即可创建一张图纸。 4.找到想要导出的图纸标高或者立面&#xff0c;例如&…...

【批处理脚本】-3.4-goto命令详解

"><--点击返回「批处理BAT从入门到精通」总目录--> 共4页精讲(列举了所有goto的用法,图文并茂,通俗易懂) 在从事“嵌入式软件开发”和“Autosar工具开发软件”过程中,经常会在其集成开发环境IDE(CodeWarrior,S32K DS,Davinci,EB Tresos,ETAS…)中,…...

超详细CentOS7 NAT模式(无图形化界面即最小安装)网络配置

在此附上CentOS7&#xff08;无图形化界面最小安装&#xff09;安装教程 超详细VMware CentOS7&#xff08;无图形化界面最小安装&#xff09;安装教程 打开VMware—>点击编辑---->选择虚拟网络编辑器 打开虚拟网络编辑器后如下图所示&#xff1a; 从下图中我们看到标…...

【可信平台】开证问题汇总--1.无采购入库记录,2.箱码无产出记录

这里面的问题主要有两类, 批号无采购入库记录箱码无产出记录批号无采购入库记录 第一个问题,以批号 W200263242022100600018 为例。 MES里入库明细里能查到可信平台集成报错: 入库数量>采购数量 再看下入库明细里的情况: 可信平台集成提示物料库存不存在。(没有入库记…...

RolePred: Open-Vocabulary Argument Role Prediction for Event Extraction 论文解读

Open-Vocabulary Argument Role Prediction for Event Extraction 论文&#xff1a;2211.01577.pdf (53yu.com) 代码&#xff1a;yzjiao/RolePred: Source code for EMNLP findings paper “Open-Vocabulary Argument Role Prediction for Event Extraction” (github.com) 期…...

【数据结构】链表相关题目(简单版)

&#x1f680;write in front&#x1f680; &#x1f4dc;所属专栏&#xff1a; 初阶数据结构 &#x1f6f0;️博客主页&#xff1a;睿睿的博客主页 &#x1f6f0;️代码仓库&#xff1a;&#x1f389;VS2022_C语言仓库 &#x1f3a1;您的点赞、关注、收藏、评论&#xff0c;是…...

通信原理 | FFT/STFT 你真的学会了吗?

文章目录 原理FFT的例子1必须要理解的点函数FFT返回值的数据结构具有对称性单边谱和双边谱变换后到频域后的横坐标和纵坐标是什么?FFT的例子2FFT的例子3短时傅里叶变换(STFT)原理 傅里叶告诉我们,现实中的任和信号波形都可以视为一系列正弦信号的叠加。 那对于一个给定的信…...

Qt使用API实现鼠标点击操作

前段时间,工作需要进行数据录入,每次都要点击3次按钮,想让鼠标自行点击,只要下位机接入,就自动点击按钮把数据读出,录入到服务端,并且进行检测,说干就干,没有经验,那只有面向百度编程. 根据查到的资料,可以使用WinAPI进行鼠标模似.可以使用的函数有两个,一个是SendMessageA(),…...

JavaWeb学习-Tomcat

常用的Web服务器 ①IIS&#xff1a;Microsoft的Web服务器产品为Internet Information Services &#xff08;IIS&#xff09;&#xff0c;IIS 是允许在公共Intranet或Internet上发布信息的Web服务器。ⅡS是目前最流行的Web服务器产品之一&#xff0c;很多著名的网站都是建立在…...

【蓝牙系列】蓝牙5.4到底更新了什么(2)

【蓝牙系列】蓝牙5.4到底更新了什么&#xff08;2&#xff09; 一、 背景 上一篇文章讲了蓝牙5.4的PAwR特征&#xff0c;非常适合应用在电子货架标签&#xff08;ESL&#xff09;领域&#xff0c; 但是实际应用场景中看&#xff0c;只有PAwR特性是不够的&#xff0c;如何保证广…...

js中window自带的四舍五入toFixed方法中的坑以及解决办法

Hello&#xff0c;各位&#xff0c;我胡汉三~啊呸&#xff0c;我又回来啦&#xff0c;还改了名&#xff0c;换了头像&#xff0c;哈哈哈&#xff01;时隔这么长时间不更新了&#xff0c;太忙了&#xff0c;平时笔记都记在了自己的电脑上&#xff0c;从今天起&#xff0c;继续更…...

JeecgBoot 3.5.0 版本发布,开源的企业级低代码平台

项目介绍 JeecgBoot是一款企业级的低代码平台&#xff01;前后端分离架构 SpringBoot2.x&#xff0c;SpringCloud&#xff0c;Ant Design&Vue3&#xff0c;Mybatis-plus&#xff0c;Shiro&#xff0c;JWT 支持微服务。强大的代码生成器让前后端代码一键生成! JeecgBoot引领…...

行测-判断推理-图形推理-样式规律-空间重构-四面体和八面体

B很明显就是对的&#xff0c;可以看到就选B走人A选项&#xff1a;横线的右边应该是菱形&#xff0c;而不是竖线&#xff0c;排除AC选项&#xff1a;菱形的左边应该是横线&#xff0c;而不是竖线&#xff0c;排除CD选项&#xff1a;横线脚底下踩的应该是三角形砖&#xff0c;而不…...

HTML5新特性

HTML5 简介 HTML5 是下一代 HTML 标准。 HTML5在HTML4.01的基础上新增了一些特性&#xff0c;从而可以让我们能够更快捷更方便的开发应用&#xff0c;同时去掉了一些 “糟粕”。 现在的主流浏览器基本都支持HTML5。 在一个HTML5 文档中的第一行&#xff0c;我们需要使用<…...

TDengine Schemaless(无模式写入)常见问题的原因及故障排除

Tips&#xff1a;使用版本&#xff1a;3.0.2.6 &#xff08;一&#xff09;TDengine ERROR (80003002): Invalid data format 格式化问题&#xff1b;如缺少必要的组成格式&#xff08;时间戳、超级表等&#xff09;&#xff0c;或有字符串未作修饰符修饰&#xff0c;类似的还…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...