ElasticSearch学习笔记(4)· ES IK分词器

2023-10-31

九、IK中文分词器

NOTE:默认ES中采用标准分词器进行分词,这种方式并不适用于中文网站,因此需要修改ES对中文友好分词,从而达到更佳的搜索效果

# 1、定义:就是将一本文本中关键词拆分出来
	我是一个博客	分词器	我 是  一个 博客	
	分词特点:拆分关键词,去掉停用词和语气词
# 2、ES中提供的分词器
	1)默认标准分词器(standard analyzer)	英文:单词分词	中文:单字分词
	2)简单分词器(simple analyzer)		 英文:单词分词,去掉数字  中文:不分词
# 3、测试不同分词器
GET _analyze
{
	"analyzer":"simple",
	"text":"redis 非常号用 111"
}

1、在线安装IK中文分词器

NOTE:要求版本严格与当前使用版本一致,如需使用其他版本替换6.2.4为使用的版本号

# 1、在es安装目录中执行如下命令
./bin/elasticsearch-plugin install http://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.2.4/elasticsearch-analysis-ik-6.2.4.zip

# 2、验证 查看
 ls plugins/
 cd /plugins/analysis-ik/
 ls
 
# 3、重启es生效

2、本地安装IK中文分词器

可以将对应的IK分词器下载到本地,然后在安装

# 1、下载对应版本
wget http://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.2.4/elasticsearch-analysis-ik-6.2.4.zip

# 2、解压
unzip elasticsearch-analysis-ik-6.2.4.zip	#先使用yum install -y unzip安装压缩包

# 3、移动到es安装目录的plugins目录中
ls elasticsearch-6.2.4/plugins/
mv elasticsearch elasticsearch-6.2.4/plugins/
ls elasticsearch-6.2.4/plugins/

3、扩展词

NOTE:当我们想要分词的词如网络热词等未进行分词可以手动指定分词,可以通过ES安装目录下/plugins/ik/config目录中名字:IKAnalyzer.cfg.xml进行配置如下:

<?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">ext.dic</entry>
    <!--用户可以在这里配置自己的扩展停止词字典-->
    <entry key="ext_stopwords"></entry>
    <!--用户可以在这里配置远程扩展字典-->
    <!--<entry key="remote_ext_dict">words_location</entry>-->
    <!--用户可以在这里配置远程扩展停止词字典-->
    <!--<entry key="remote_ext_stopwords">words_location</entry>-->
</properties>

定义:现有IK分词器无法将这个词切分成一个关键词,但是有希望某个词为关键词

​ ik分词器 大佬 遭遇 突击 ===>不明觉厉 等等。

修改配置文件如下配置:

 <!--用户可以在这里配置自己的扩展字典-->
<entry key="ext_dict">ext.dic</entry>

4、停用词

定义:现有IK分词器将一个关键词切分为一个词,但是出于某种原因这个词不能被作为关键词出现

配置IK的配置文件:ES安装目录下/plugins/ik/config目录中名字:IKAnalyzer.cfg.xml

<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords"></entry>

5、配置远程词典

配置IK的配置文件:ES安装目录下/plugins/ik/config目录中名字:IKAnalyzer.cfg.xml

url

words_location

1、准备一个nginx服务器,里面方入init.txt文件,用来存放远程扩展词典

2、在浏览器访问远程扩展词典,能访问即可

3、在 http://192.168.0.1/init.txt

4、如果启动报错:

​ java.security.AccessControlException:access denied (“java.net.SocketPermission” “192.168.0.1” “connect,resolve”)

5、修改虚拟机安全策略

​ 修改:/user/java/jdk1.8.0_171-amd64/jre/lib/security/java.policy加入如下配置

​ permission java.net.SocketPermission “192.168.0.1”,“connect,resolve”

目前该插件支持热更新IK分词器,无需重启es,通过上文在IK配置文件中提到到如下配置

<!--用户可以在这里配置远程扩展字典-->
<entry key="remote_ext_dict">url</entry>
<!--用户可以在这里配置远程扩展停止词字典-->
<entry key="remote_ext_stopwords">words_location</entry>

其中location是指一个url,比如http://myweb.com/getDict,该请求只需满足以下两点即可完成分词热更新

1、该http请求需要返回两个头部(header),一个是Last-Modified,一个是ETag,者两者都是字符串类型,只要有一个发生变化,该插件就回去抓取新的分词进而更新词库

2、该http请求返回的内容格式是一行一个分词,换行符用\n即可。

满足上面两点要求就可以实现热更新分词了,不需要重启ES实例

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

6、分词器总结

1、远程词典修改不需要重启服务,编码必须都是UTF-8

2、停用词:不会进行分词,过滤分词索引查询

3、优先级:远程>本地(叠加的方式) 停用词>扩展此

4、不能对原始数据进行分词,只能对只有添加的数据进行分词判断处理,只能删除全部文档重新建立索引

ElasticSearch学习笔记(1)· ES基本概念
ElasticSearch学习笔记(2)· 基于Kibana的基本CRUD
ElasticSearch学习笔记(3)· ES高级检索(query)
ElasticSearch学习笔记(4)· ES IK分词器
ElasticSearch学习笔记(5)· Java操作Elasticsearch6.2.4
ElasticSearch学习笔记(6)· Java操作Elasticsearch7.6.1
ElasticSearch学习笔记(7)· Springboot+SpringData操作ES
ElasticSearch学习笔记(8)· ES集群的搭建

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ElasticSearch学习笔记(4)· ES IK分词器 的相关文章

随机推荐

  • leetcode刷题(9)二叉树(3)

    各位朋友们 提前祝大家五一劳动节快乐啊 今天我为大家分享的是关于leetcode刷题二叉树相关的第三篇我文章 让我们一起来看看吧 文章目录 1 二叉树的层序遍历 题目要求 做题思路 代码实现 2 从前序与中序遍历序列构造二叉树 题目要求 做
  • 合并两个有序数组 java_Leetcode.合并两个有序数组(Java实现)

    合并两个有序数组 给定两个有序整数数组 nums1 和 nums2 将 nums2 合并到 nums1 中 使得 num1 成为一个有序数组 说明 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 你可以假设 nums1 有
  • 最强自动化测试框架Playwright(32)-定位器

    定位器是playwright自动等待和重试能力的核心部分 代表了一种随时在页面上查找元素的方法 Locator Playwright Python 方法 all 当locator指向一组元素时 这个方法返回locator对应的数组 指向它们
  • 无刷电机驱动器

    0 0参考 FOC 看这篇文章就够了 志辉君 自制FOC驱动器 深入浅出讲解FOC算法与SVPWM技术 SPWM基本原理详解 图文并茂 公式推导 C程序实现 1 开源的FOC方案 1 SmipleFOC是比较常见的无刷驱动方案 因为其便宜的
  • 我的DDK学习经验(转载)

    这篇文章在无数技术网站都找的到 我在这里发这篇文章的原因 1 这篇文章实在很好 别说作者倾情的介绍了自己的经验和感想 尤其是关于 钱途 的感想 里面介绍的一些书 真够有志开发驱动程序的同志看半辈子了 2 我搜索了文档中心 没有发现这篇文章
  • Ubuntu 分辨率更改 xrandr Failed to get size of gamma for output default

    sudo vim etc xorg conf copy Section Monitor Identifier Monitor0 VendorName Monitor Vendor ModelName Monitor Model HorizS
  • Shell脚本攻略:循环语句while、until

    目录 一 理论 1 while 2 until 3 break 4 continue 二 实验 1 实验一 2 实验二 3 实验三 4 实验四 5 实验五 6 实验六 一 理论 1 while 1 while用法 while循环满足条件执行
  • C++ 构造函数初始化调用顺序及类函数内部嵌套函数情况

    一 C 构造函数初始化顺序 C 构造函数按下列顺序被调用 1 2 3 4是按照优先级顺序来的 1 任何虚拟基类的构造函数按照它们被继承的顺序构造 2 任何非虚拟基类的构造函数按照它们被继承的顺序构造 3 任何成员对象的构造函数按照它们声明的
  • Apex类格式

    例子
  • 自动化测试之Selenium

    https www cnblogs com ldd215 p 5549984 html 文章目录 python常用操作 0 1 获取Excel中的数据 0 2 截取图片 第一章 第一讲 自动化测试概述 1 1什么是软件测试 1 2什么是自动
  • 【 力扣(LeetCode)刷题详细介绍】

    转载于 东心十 关于leetcode刷题详细介绍 虽然刷题一直饱受诟病 不过不可否认刷题确实能锻炼我们的编程能力 相信每个认真刷题的人都会有体会 现在提供在线编程评测的平台有很多 比较有名的有 hihocoder LintCode 以及这里
  • Google浏览器安装插件

    以安装 沙拉查词 插件为例 1 先点击Google浏览器右上方三个小点 找到 设置 将搜索引擎改为Bing 2 然后就可以使用新建页面了 在新建页面搜索 极简插件 或 扩展迷 搜索 沙拉查词 并下载 下载下来是一个压缩包 解压之后可以找到里
  • dnf安徒恩服务器不稳定,DNF安徒恩开团后掉线那些事 网友:这时才体会到混子的重要性...

    原标题 DNF安徒恩开团后掉线那些事 网友 这时才体会到混子的重要性 DNF安徒恩副本难度对于目前的玩家来说并不难 所以很多人追求极限人数开团 有时是12人 有时甚至是10人 于是问题来了 有人掉线怎么办 一起来看看大家在安徒恩的遭遇 玩家
  • 华为2018秋招笔试——将一段压缩后的字符串解压缩,并且排序输出

    题目描述 将一段压缩后的字符串解压缩 并且排序输出 解压规则 每个字符串后面跟随一个数字 表示这个字符串的重复次数 例如 a5 解压缩的结果为 aaaaa abc3 解压缩后的结果为 abcabcabc 排序规则 1 根据每个字符串的重复次
  • 详解拷贝构造函数

    基本规则 拷贝构造函数是一种特殊的构造函数 函数的名称必须和类名称一致 它必须的一个参数是本类型的一个引用变量 所以类中可以存在多个拷贝构造函数 编译器会自动生成默认构造函数 这个构造函数很简单 仅仅使用 老对象 的数据成员的值对 新对象
  • PyTorch(Python)训练MNIST模型移动端IOS上使用Swift实时数字识别

    识别手写数字是计算机视觉的基石问题 可以通过神经网络来解决 在此 我不会重复有关模型构建和训练的细节 本文中 我的目的是将经过训练的模型移植到移动环境中 我使用 pytorch 构建模型 因为我想尝试一下 torchscript 对于 io
  • 山东大学项目实训开发日志——基于vue+springboot的医院耗材管理系统(14)

    我们解决了一个逻辑上的问题 1 医院向供货商下单 如果供货商一时不能提供足够的数量 应该怎么办 2 科室库向中心库提交申请 如果中心库库存不满足申请的数量 应该怎么办 经过一番讨论 对于第一个问题 后端的负责人表示 应该有一个功能 允许供货
  • ESP8266-01S系列学习笔记-01模块基本知识

    1 产品概述 ESP8266是乐鑫科技生产的一款内置WiFi功能的单片机 它有很多种型号 这些型号分别对应了不同的封装 ESP8266是一款超低功耗的UART WiFi 透传模块 拥有业内极富竞争力的封装尺寸和超低能耗技术 专为移动设备和物
  • 【实战教程】在小程序中快速生成分享海报

    在小程序中生成分享海报是一个很常见的需求 目前主要有以下两种做法 直接由前端生成 使用小程序提供的 canvas API 由后端知晓云 云函数 生成 前端再获取 本文将介绍通过知晓云 云函数 来生成分享海报的功能 并使用 webpack 和
  • ElasticSearch学习笔记(4)· ES IK分词器

    目录 九 IK中文分词器 1 在线安装IK中文分词器 2 本地安装IK中文分词器 3 扩展词 4 停用词 5 配置远程词典 6 分词器总结 九 IK中文分词器 NOTE 默认ES中采用标准分词器进行分词 这种方式并不适用于中文网站 因此需要