elasticsearch IK分词器

说明: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.mzph.cn/news/11094.shtml

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

相关文章

MATLAB与ROS联合仿真——控制类功能模块介绍

1、Keyboard Control (1)输入参数:无 (2)输出参数:Speed Factor为输出的速度系数(1代表前行,0停止,-1代表后退),Turn Factor为输出的舵机系数&am…

webpack联邦模块介绍及在dumi中使用问题整理

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、ModuleFederationPlugin参数含义?二、如何在dumi中使用及问题整理1. 如何在dumi中使用(这个配置是好使的)2.相关问题整理2.1 问题12.2 问题2 总…

【LeetCode-中等】剑指 Offer 67. 把字符串转换成整数(详解)

题目 写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者负号时&#…

【浩鲸科技】济南Java后端面经

本文目录 写在前面试题总览题目解析1.说一下SpringBoot中常用的注解2.Redis中的基本数据类型3.TCP的网络协议4.java中常见的锁5.Hashmap的底层数据结构、底层源码、扩容机制源码6.java面向对象的特点 写在前面 关于这个专栏: 本专栏记录一些互联网大厂、小厂的面试实…

华为HCIP第二节-------------------------ISIS

IS-IS(Intermediate System to Intermediate System,中间系统到中间系统)是ISO (International Organization for Standardization,国际标准化组织)为它的CLNP(ConnectionLessNetwork Protocol&…

Vue 常用指令 v-on 自定义参数和事件修饰符

自定义参数就是可以在触发事件的时候传入自定义的值。 文本框,绑定了一个按钮事件,对应的逻辑是sayhi,现在无论按下什么按钮都会触发这个sayhi。但是实际上不是所有的按钮都会触发,只会限定某一些按钮,最常见的按钮就…

【能量管理系统( EMS )】基于粒子群算法对光伏、蓄电池等分布式能源DG进行规模优化调度研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

MyBatis学习笔记之逆向工程

文章目录 逆向工程配置与生成QBC查询风格 所谓的逆向工程是:根据数据库表逆向生成的Java的pojo类、SqlMapper.xml文件、以及mapper接口类等 要完成这个工作,需要借助别人写好的逆向工程插件。 虽然有点经典白学,但好像也没不白学 思考&#x…

【爬虫案例】用Python爬取iPhone14的电商平台评论

用python爬取某电商网站的iPhone14评论数据, 爬取目标: 核心代码如下: 爬取到的5分好评: 爬取到的3分中评: 爬取到的1分差评: 所以说,用python开发爬虫真的很方面! 您好&…

基于Java+Springboot+Vue的民宿管理系统(源代码+数据库)092

基于JavaSpringbootVue的民宿管理系统(源代码数据库)092 一、系统介绍 本项目前后端分离 本系统分为管理员、商家、用户三种角色 用户角色包含以下功能: 注册、登录、民宿信息查看、房间信息(查看/预订/评论/收藏/退订/投诉)、在线客服、房间预订管理、房间退订…

基于vue3.0实现vr全景编辑器

随着社会的不断发现,现实生活中有很多时候会使用到全景现实,比如房地产行业vr看房,汽车行业vr看车之类的,全景可视化真实还原了现场的场景,真正做到沉浸式体验。 现在我们基于vue3.0版本开发出了一款沉浸式的编辑器&a…

前后端项目分离开发

问题说明: 开发人员同时负责前端和后端代码开发,分工不明确开发效率低前后端代码混合在一个工程中,不便于管理对开发人员要求高,人员招聘困难 解决方法: 前后端分离开发 介绍 前后端分离开发,就是在项…

Asp.Net 6中使用Log4Net

Asp.Net 6中使用Log4Net 1. 先新建一个ASP.NET Core空项目 2. 通过Nuget包管理器安装下面两个包 log4net Microsoft.Extensions.Logging.Log4Net.AspNetCore 3. 在项目根目录下新建log4net的配置文件log4net.config&#xff0c;并将其设置为始终复制。 <?xml version&quo…

【Spring】IOC的原理

一、 IOC 的概念 Spring 的 IOC &#xff0c;即控制反转&#xff0c;所谓控制反转 —— 本来管理业务对象&#xff08;bean&#xff09;的操作是由我们程序员去做的&#xff0c;但是有了 Spring 核心容器后&#xff0c;这些 Bean 对象的创建和管理交给我们Spring容器去做了&am…

如何选择低代码/零代码平台(最全平台总结)

来谈论这个问题之前&#xff0c;我们先来看看到底什么是低代码/零代码—— 低代码 对于“低代码”的宣传其实已经很久很广泛了&#xff0c;但是争议从来都没有停止。 忘记之前在哪里看到过一个“低代码将会取代程序员”之类的说法&#xff0c;觉得很好笑&#xff0c;看了一些…

【C++】做一个飞机空战小游戏(二)——利用getch()函数实现键盘控制单个字符移动

[导读]本系列博文内容链接如下&#xff1a; 【C】做一个飞机空战小游戏(一)——使用getch()函数获得键盘码值 【C】做一个飞机空战小游戏(二)——利用getch()函数实现键盘控制单个字符移动 在【C】做一个飞机空战小游戏(一)——使用getch()函数获得键盘码值一文中介绍了如何利用…

2023年深圳杯数学建模A题影响城市居民身体健康的因素分析

2023年深圳杯数学建模 A题 影响城市居民身体健康的因素分析 原题再现&#xff1a; 以心脑血管疾病、糖尿病、恶性肿瘤以及慢性阻塞性肺病为代表的慢性非传染性疾病&#xff08;以下简称慢性病&#xff09;已经成为影响我国居民身体健康的重要问题。随着人们生活方式的改变&am…

opencv-18 什么是色彩空间?

1.什么是色彩空间类型&#xff1f; 色彩空间类型&#xff0c;也称为颜色空间类型或色彩模型&#xff0c;是一种表示图像中颜色的方式。在计算机图形学和数字图像处理中&#xff0c;有许多种色彩空间类型&#xff0c;每种类型有不同的表达方式和特点。 常见的色彩空间类型包括&a…

maven

一、为什么需要使用maven 如今我们构建一个项目需要用到很多第三方的类库 &#xff0c;例如我们在开发项目中 需要引入 这些依赖jar包 一个项目Jar包的数量之多往往让我们瞠目结舌&#xff0c;并且Jar包之间的关系非常复杂&#xff0c;一个Jar包往往又会引用其他Jar包&#x…

flex 弹性布局学习

一.Flex布局: Flex是Flexible Box 缩写“弹性布局”,用来为盒状模型提供最大得灵活性。 任何一个容器都可以指定为 Flex 布局。 .box{display: flex; } 行内元素也可以使用 Flex 布局。 .box{display: inline-flex; } Webkit 内核的浏览器&#xff0c;必须加上-webkit前缀。…