elasticsearch IK分词器

news2024/11/25 3:06:33

说明:es默认的分词器对中文的识别不是特别好,一段话的分词是一个一个汉字,这显然没有达到想要的结果。

在这里插入图片描述

可以安装IK分词器,兼容中文的分词;

IK分词器

安装

安装IK分词器,例如elasticsearch的容器名为es;

(命令方式,安装速度慢,网络状况不好非常容易失败,而且会丢失文件,不推荐使用)

# 进入容器内部
docker exec -it es /bin/bash

# 在线下载并安装
./bin/elasticsearch-plugin  install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip

#退出
exit

#重启容器
docker restart es

在这里插入图片描述

在这里插入图片描述

(手动拖入)

可以选择在对应网站下载(注意ik版本需要和es版本一致),然后将文件拖入到es容器挂载的数据卷目录下;

# 查看es容器挂载的数据卷路径
docker volume inspect es-plugins

将下载下来的IK分词器文件,解压,复制到此目录下;

在这里插入图片描述

在这里插入图片描述

使用

IK分词器有以下两种模式:

  • ik_smart:最少切分,最少分词数量;

  • ik_max_word:最细切分,最多可分词数;

使用“ik_smart”模式,可以看右侧,分词是符合中文语境的;

在这里插入图片描述

“ik_max_word”模式

在这里插入图片描述

扩展词汇&敏感词汇排除

有一些人名、名牌、热词等词汇,在分词时可能会被拆分开,如“王麻子菜刀”,可能被拆分成了“王麻子”、“菜刀”,拆分之后就没有意义了。这些词汇可以添加到IK分词器的扩展字典文件中,使分词时这些词汇被作为一个完整的词划分。

在这里插入图片描述

另外,也有一些词汇是敏感词汇(政治、宗教、辱骂等等),我们希望在搜索时,这些分词不参与分词和搜索。同样这类词汇也可以添加到IK分词器的停用词典中,使这类敏感词汇不参与分词和搜索。

第一步:修改配置文件

在IK分词器目录下,切换到config目录,打开文件IKAnalyzer.cfg.xml,设置扩展词汇和排除词汇文件名;

在这里插入图片描述

IKAnalyzer.cfg.xml文件内容

在这里插入图片描述

第二步:添加词汇

分别在扩展词汇词典、停用词典添加对应的词汇

(扩展词汇文件,ext.dic,该文件不存在,需手动创建)

在这里插入图片描述

(停用词典文件,stopword.dic,新增一个词汇月亮

在这里插入图片描述

第三步:重启es

重启es,测试,可以看到分词把“毛源昌眼镜”当做一个词来划分了,达到了想要的结果;

在这里插入图片描述

同样,月亮被作停用词典中的词汇,未参与分词;

在这里插入图片描述

注意

需要注意的是,如果一个词汇是一个较为特别的词汇,如“独钓寒江雪”;

在这里插入图片描述

在分词排除时不会排除掉,因为在分词时,这句词汇不太可能被分为一个完整的词汇,而在停用词典中,是根据完整的词汇来排除的;
在这里插入图片描述

所以,做到万无一失,应该把需要排除分词的词汇,先在扩展词典里添加,然后再在停用词典里添加,这样就绝对会被排除掉了;

在这里插入图片描述

重启es,测试,“独钓寒江雪”被完全排除

在这里插入图片描述

总结

es分词对中文兼容不太好,可以选择IK分词器来使用,IK分词器有两种模式,分别是“ik_smart”、“ik_max_word”。

另外,IK分词器支持对词汇进行扩展,可以把一些需要绑定在一起的词汇,不希望被分开的词汇写入到扩展词典中,这些词汇会被当做一个整体参与分词;同样如果需要排除一些词汇,不希望这些词汇参与分词,也可以将这些词汇写入到停用词典中。

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

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

相关文章

探索Java并发编程利器:LockSupport,一种高效的线程阻塞与唤醒机制

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、人工智能等,希望大家多多支持。 目录 一、导读二、概览三、用法四、原理五、线程等待和唤醒的方法5.1 Lo…

Microsoft Edge 浏览器的Bing Chat

微软公司持续发力,推出的产品 Bing Chat 与 ChatGPT 之间的竞争愈发激烈。如今,微软不仅不断更新 Edge 浏览器,还将 Bing Chat 内置在边栏中,方便用户快速访问。这一举措不禁让人想起,Edge 浏览器如今已经是一款名副其…

Maven项目的两种打包方式-spring-boot-mavne-plugin/maven-jar-plugin

Maven项目的两种打包方式-spring-boot-mavne-plugin/maven-jar-plugin 1. 前言Maven的两种打包方式 2. 流程图3. spring-boor-maven-plugin打包4. maven-jar-plugin/maven-dependency-plugin打包 1. 前言 Maven的两种打包方式 spring-boot-maven-plugin springboot默认打包方…

新星计划联系人列表管理后台(一)-- 搭建项目开发环境

前言:对于前端的内容目前已经发现了很多大佬写的高质量文章,我这里就没必要再重复去造轮子了。接下来我会记录一下我从零到整完成此项目的过程,类似于日记,我会把我开发的步骤、过程中遇到的问题、如何解决此问题的思路、以及get到…

FPGA+EMMC 8通道存储小板

FPGA 采用XILINX公司A7100作为主芯片 AD采用AD7606及一款陀螺仪传感器,可以实时存储到EMMC,系统分为采集模式及回放模式 通过232接口对工作模式进行配置,采样率可以动态配置 回放采用W5100S通过TCP协议进行回放数据

福格行为模型

福格行为模型 福格行为模型也被称为“上瘾模型”,在工作和生活中应用非常的广泛。在工作中:产品设计、用户运营策略、活动设计、广告设计、游戏设计等等;在生活中:学习习惯培养、持续的健身、减肥计划等等。这些事通常大家以为是…

【N32L40X】学习笔记10-外部触发方式计数

定时器采用外部触发方式计数 也就是外部时钟源模式2 此模式由 TIMx_SMCTRL .EXCEN 选择等于 1。计数器可以在外部触发输入 ETR 的每个上升沿或下降沿 计数。 极性选择分频选择过滤选择选择外部时钟ETR模式 bsp_time_counter_ETR.h #ifndef _BSP_TIME_COUNTER_ETR_H_ #defi…

STM32(HAL库)驱动AD8232心率传感器

目录 1、简介 2、CubeMX初始化配置 2.1 基础配置 2.1.1 SYS配置 2.1.2 RCC配置 2.2 ADC外设配置 2.3 串口外设配置 2.4 GPIO配置 2.5 项目生成 3、KEIL端程序整合 3.1 串口重映射 3.2 ADC数据采集 3.3 主函数代码整合 4 硬件连接 5 效果展示 1、简介 本文通过STM32…

【车载性能优化】将线程进程运行在期望的CPU核心上

车载Android应用开发中,可能会出现一种奇葩的要求:与用户交互时应用需要全速运行,保证交互的流畅性,但是如果应用进入后台就需要怠速运行,让出更多的资源保证系统或前台应用的流畅度。那么基于这种需求,我们…

深度学习(31)——DeformableDETR(2)

深度学习(31)——DeformableDETR(2) 文章目录 深度学习(31)——DeformableDETR(2)1. backbone——Resnet502. neck——Channel mapper3. DeformableDETRHead4. DeformableDetrTransf…

Linux:多进程和多线程回环socket服务器和客户端

多进程socket服务器代码&#xff1a; #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #include <string.h> #include <ctype.h> #include <sys/wait.h> #i…

JWT 使用

前端访问后台a系统和b系统访问 Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准&#xff08;(RFC 7519).该token被设计为紧凑且安全的&#xff0c;特别适用于分布式站点的单点登录&#xff08;SSO&#xff09;场景。 JWT的本质就是一个…

记录安装DragGAN遇到的问题

首先第一个是安装的问题 安装的envirenment.yml有很多包过时了下载不了&#xff0c;可以参考以下文章写一个requirement.txt来下载依赖环境 --extra-index-url https://download.pytorch.org/whl/cu118 numpy1.23.5 click scipy pillow9.5.0 requests tqdm4.65.0 ninja matpl…

哪些语句会被waf屏蔽?

什么是waf&#xff1a;Web应用防火墙&#xff0c;Web Application Firewall的简称。 waf的功能&#xff1a;WAF可以发现和拦截各类Web层面的攻击&#xff0c;记录攻击日志&#xff0c;实时预警提醒&#xff0c;在Web应 用本身存在缺陷的情况下保障其安全。 封IP &#xff1a;…

Qt应用开发——QLineEdit

目录 一、概述 二、属性和方法 三、信号 一、概述 QLineEdit允许用户输入和编辑单行纯文本&#xff0c;并可以使用快捷编辑功能&#xff0c;包括复制、粘贴、剪切和拖放。是项目开发中最常用的输入控件。 默认键绑定描述如下。 Left Arrow //将光标向左移…

Fourier变换极其应用(Brad G. Osgood)——第1章——Fourier级数

目录 第1章 Fourier级数 1.1 选择&#xff1a;“欢迎入局”(Choices: Welcome Aboard) 1.2 周期性现象(Periodic phenomena) 1.2.1 时间和空间(time and space) 1.2.1.1 时间和空间周期性在波动中最自然地结合在一起 1.2.1.2 更多关于空间的周期性例子 1.2.2 定义&…

11 简单的Thymeleaf语法

11.1 spring-boot环境准备 重要依赖&#xff1a; <!--thymeleaf--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> 11.2 转发消息不转义 就是如…

picgo Request failed with status code 404

今天写picgo的时候&#xff0c;出现了一个错误&#xff0c;如何解决&#xff1a; 这里是repo的配置出现了问题&#xff0c;不过我的是因为粗心&#xff0c;把master写成了mater&#xff0c;emmmm 这里的repo要跟仓库的地址相同就是这一块&#xff1a;把这一块填到repo就行 然…

Linux查看二进制文件

Linux查看二进制文件 hexdump、hd、od、xxd hexdump、hd 可以使用16进制、10进制、8进制、ascii码的形式查看文件。 执行 ls -al which hd就会看到hd其实只是hexdump的一个软链接。 使用man hexdump&#xff0c;可以查看hexdump的各种参数。 -b, --one-byte-octal 单字节…

使用SQL JOIN语句把来自两个或多个表的行结合起来

先创建一个表&#xff1a; 创建一个名为 websites 的表 CREATE TABLE websites ( id int, name varchar(255), url varchar(255), alexa varchar(255), country varchar(255) ); 然后给它插入一些数据&#xff08;插入了四行新数据&#xff09;&#xff1a; insert into we…