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

elasticsearch hanlp插件远程词典配置

elasticsearch hanlp插件远程词典配置

  • 背景
  • 远程词典配置
    • 新增远程词典文件
    • 修改hanlp-remote.xml
    • 自动加载词典
  • 远程词典测试

背景

在使用elasticsearch的过程中,总会遇到与分词相关的需求,这里将针对常用的elasticsearch hanlp(后面统称为 es hanlp)分词插件进行讲解演示配置自定义业务字典,提高es hanlp分词的准确性,同时也提高查询效率。关于es hanlp通过更改关键词文件配置自定义词典的内容可以参考文章:https://developer.aliyun.com/article/1163240,本文主要是讲述另外一种自定义词典内容的操作,配置远程词典。

远程词典配置

新增远程词典文件

es hanlp关于远程词典的文件配置方式参考官方文档即可,文档地址:https://github.com/KennFalcon/elasticsearch-analysis-hanlp/tree/master,这里我把远程词典文件放在我们的腾讯云上面,主要是因为es hanlp 在加载远程词典文件时需要通过response header判断Last-Modified和 ETag来确定远程文件是否有变动,进而决定是否需要加载更新;而腾讯云返回的文件是直接带有Last-Modified和 ETag,这里可以看一下我的文件响应的response
在这里插入图片描述
符合官方文档要求的远程词典文件返回两个头部(header),一个是 Last-Modified,一个是 ETag
在这里插入图片描述
说明:这里说明一下,如果这两个属性都没有变化的话,es hanlp插件是不会热更新关键词的;
另外,如果大家想要使用腾讯云COS作为远程词典文件存放位置的话,需要注意必须要用文件的原始请求地址,不能用有CDN缓存的地址,这样才能达到1分钟热更新的目的。比如

http://存储桶名.cos.ap-beijing.myqcloud.com/ei-dongao/mywords.txt

远程词典文件准备好之后就可以修改es hanlp 远程配置文件hanlp-remote.xml了

修改hanlp-remote.xml

找到hanlp-remote.xml配置文件路径ES_HOME/config/analysis-hanlp
在这里插入图片描述
修改hanlp-remote.xml,增加远程词典配置
在这里插入图片描述
这里配置好远程词典路径之后需要重启es,因为改动了配置文件嘛,后续更改远程配置文件的内容时就无需重启es了,因为你没有改动es的配置文件。

自动加载词典

配置完成远程词典内容后,无需重启es,等待1分钟后,词典自动加载。

[2023-04-24T13:29:16,636][INFO ][c.h.d.ExtMonitor         ] [ei-test-es-node190] hanlp custom dictionary isn't modified, so no need reload[2023-04-24T13:29:17,163][INFO ][c.h.d.RemoteMonitor      ] [ei-test-es-node190] load hanlp remote custom dict path: http://存储桶名.cos.ap-beijing.myqcloud.com/ei-dongao/mywords.txt[2023-04-24T13:29:17,623][INFO ][c.h.d.RemoteMonitor      ] [ei-test-es-node190] finish load hanlp remote custom dict path: http://存储桶名.cos.ap-beijing.myqcloud.com/ei-dongao/mywords.txt

比如我在远程词典中增加关键词

腾讯云文件管理

加载完成之后我们可以开始测试是否生效。
注:多台es服务器配置时,需保证指向相同的远程词典路径,保证加载关键词文件的一致

远程词典测试

在远程词典测试之前,我们需要对我们的索引开启远程词典,这需要配置自定义分词,并开启远程词典加载开关,es hanlp 自定义分词配置参考博文:https://developer.aliyun.com/article/1163285
1.当我们使用hanlp默认词典配置的时候我们测试

POST _analyze{"text": "初级会计指南在这里","analyzer": "hanlp"}

返回结果是

{"tokens" : [{"token" : "初级","start_offset" : 0,"end_offset" : 2,"type" : "b","position" : 0},{"token" : "会计","start_offset" : 2,"end_offset" : 4,"type" : "nnt","position" : 1},{"token" : "指南","start_offset" : 4,"end_offset" : 6,"type" : "n","position" : 2},{"token" : "在","start_offset" : 6,"end_offset" : 7,"type" : "p","position" : 3},{"token" : "这里","start_offset" : 7,"end_offset" : 9,"type" : "rzs","position" : 4}]}

2.我们使用自定义分词配置,开启远程词典

PUT test{"settings": {"analysis": {"analyzer": {"hanlp_dongao": {"tokenizer": "hanlp_analyzer"}},"tokenizer": {"hanlp_analyzer": {"type": "hanlp","enable_stop_dictionary": true,"enable_custom_config":true,"enable_remote_dict":true}}}}}

然后配置关键词

初级会计

等待远程词典加载完成后再次用开启了远程词典的索引测试
在这里插入图片描述
加载完成之后再次验证

POST test/_analyze{"text": "初级会计指南在这里","analyzer": "hanlp_dongao"}

分词结果

{"tokens" : [{"token" : "初级会计","start_offset" : 0,"end_offset" : 4,"type" : "n","position" : 0},{"token" : "指南","start_offset" : 4,"end_offset" : 6,"type" : "n","position" : 1}]}

可以看到已经将【初级会计】分成一个词了。
这里有一点需要说明,新增加关键词的话,热加载完成之后es分词就可以按照增加的关键词进行分词,但是删除关键词的话,还是会按之前增加的关键词进行分词,可能是es hanlp插件有缓存机制,也可能是插件版本的问题,我用的是匹配es版本6.7.1的hanlp插件,最新的版本可能不会存在这个问题,但是鉴于升级es改动较大,为了不影响业务只能采用当下版本对应的hanlp插件。这一点在使用es hanlp插件时需要考虑在内。

相关文章:

elasticsearch hanlp插件远程词典配置

elasticsearch hanlp插件远程词典配置 背景远程词典配置新增远程词典文件修改hanlp-remote.xml自动加载词典 远程词典测试 背景 在使用elasticsearch的过程中,总会遇到与分词相关的需求,这里将针对常用的elasticsearch hanlp(后面统称为 es …...

力扣每日一题 6/18 字符串/模拟

博客主页:誓则盟约系列专栏:IT竞赛 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 2288.价格减免 【中等】 题目: 句子 是由若干个单词组成的字符…...

架构设计 - Nginx Proxy Cache 缓存配置

摘要: web 应用业务缓存通常3级: 一级缓存:JVM 本地缓存 二级缓存:Redis集中式缓存 三级缓存:Nginx Proxy Cache 缓存 或 Nginx Lua 缓存 四级缓存:静态资源CDN缓存 本文主要分享 Nginx Proxy Cache 缓…...

【前端】HTML5基础

目录 0 参考1 网页1.1 什么是网页1.2 什么是HTML1.3 网页的形成 2 浏览器2.1 常用的浏览器2.2 浏览器内核 3 Web标准3.1 为什么需要Web标准3.2 Web标准的构成 4 HTML 标签4.1 HTML语法规范4.1.1 基本语法概述4.1.2 标签关系4.1.2.1 包含关系4.1.2.2 并列关系 4.2 HTML基本结构标…...

9个最佳性能测试工具(2024)

1、前言 性能测试检查软件程序在预期工作负载下的速度、响应时间、可靠性、资源使用情况和可扩展性。性能测试的目的不是发现功能缺陷,而是消除软件或设备中的性能瓶颈。 性能测试为利益相关者提供有关其应用程序的速度、稳定性和可扩展性的信息。更重要的是&…...

RTthread+STM32F407ZGTx+烟雾报警检测+蜂鸣器报警+LED闪烁||使用RTthread Studio

目录 实验背景 1.安装环境 2.配置环境 3.先编译下载实例程序2,观察DS0是否闪烁 4.实验方法 5.实例代码 6.硬件连接 7.实验效果 8.关于这次开发遇到的问题 1.反应慢,都熄灭1分钟多了,才报的问题? 2.关于rt_pin_mode(KEY…...

k8s资源的基本操作

文章目录 一、Namespace1、概述2、预定义的k8s命名空间2.1、default2.2、kube-public2.3、kube-system2.4、kube-node-lease 3、命名空间基本操作3.1、查看3.1.1、查看所有的命名空间3.1.2、查看指定的命名空间3.1.3、指定输出格式3.1.4、查看ns详情 3.2、创建3.2.1、命令行创建…...

19.面包屑导航制作

面包屑导航制作 官网&#xff1a;组件 | Element 1. 在layout下新建BreadCrumb.vue BreadCrumb.vue <template><div class"bread-text"><el-breadcrumb class"bred"separator"/"><el-breadcrumb-item v-for"item in…...

做动画?Animatediff 和 ComfyUI 更配哦!

如果从工作流和内存利用率的角度来说&#xff0c;Animatediff 和 ComfyUI 可能更配一些&#xff0c;毕竟制作动画是一个很吃内存的操作。 首先&#xff0c;我们需要在管理器中下载 Animatediff 插件&#xff0c;当然也可以直接导入听雨的工作流&#xff0c;然后在管理器的安装…...

笔记-python里面的xlrd模块详解

那我就一下面积个问题对xlrd模块进行学习一下&#xff1a; 1.什么是xlrd模块&#xff1f; 2.为什么使用xlrd模块&#xff1f; 3.怎样使用xlrd模块&#xff1f; 1.什么是xlrd模块&#xff1f; ♦python操作excel主要用到xlrd和xlwt这两个库&#xff0c;即xlrd是读excel&…...

oracle将字符串中的字符和数字拆分开等功能

将字符串中的字符和数字拆分开 create or replace procedure F_GetNumber1( inString IN VARCHAR2,n_return1 out varchar2, n_return2 out varchar2) ISDCHAR VARCHAR2(1024); OUTCHAR VARCHAR2(1024); j number default 0; ulen number; BEGINOUTCHAR:;DCHAR:TRIM(inStr…...

汇编基础之使用vscode写hello world

汇编语言&#xff08;Assembly Language&#xff09; 概述 汇编语言&#xff08;Assembly Language&#xff09;是一种低级编程语言&#xff0c;它直接对应于计算机的机器代码&#xff08;machine code&#xff09;&#xff0c;但使用了更易读的文本符号。每台个人计算机都有…...

APS计划排程系统如何打破装备使用约束

APS计划排程系统是离散制造型企业在计划控制方向的重要支撑&#xff0c;它提供的是交期预测、订单排产计划、物料采购计划、人力分配计划等等。近些几年来&#xff0c;多品种、小批量、多订单的生产模式&#xff0c;让企业的计划员应接不暇、疲累不堪&#xff0c;传统的人工经验…...

gigachad - suid

gigachadeasyftp利用、google反图搜索、 suid提权、s-nail 提权 主机发现 ┌──(kali㉿kali)-[~/桌面/OSCP] └─$ sudo netdiscover -i eth0 -r 192.168.44.138/24服务探测 ┌──(kali㉿kali)-[~/桌面/OSCP] └─$ sudo nmap -sV -A -T 4 -p- 192.168.44.138 |_/kingchad…...

QtScript模块

在Qt中&#xff0c;可以使用Qt Script模块来将C类和方法绑定到Qt脚本引擎中&#xff0c;从而使得可以在Qt脚本中调用这些C类和方法。以下是一个简单的示例&#xff0c;演示了如何在Qt中将C类暴露给Qt Script引擎&#xff1a; 假设有一个名为 MyClass 的C类&#xff0c;其头文件…...

qt中for循环不要使用循环中会更改的变量

检查代码&#xff0c;发现始终会少了一位&#xff0c;最后发现我在使用for循环时&#xff0c;懒省事&#xff0c;判断条件中使用的变量是涉及到循环体中更改的变量&#xff0c;代码如下&#xff0c;更直观 for (int i 0; i < m_images.size(); i) {packageToDBList[0].imag…...

spark独立集群搭建

spark独立集群搭建(不依赖Hadoop) 1、上传spark-2.4.5-bin-hadoop2.7.tgz至 /usr/local/moudel &#xff0c;再解压到 /usr/local/soft tar -zxvf spark-2.4.5-bin-hadoop2.7.tgz -C /usr/local/soft/ 重命名 mv spark-2.4.5-bin-hadoop2.7/ spark-2.4.5 配…...

【BFS算法】广度搜索·由起点开始逐层向周围扩散求得最短路径(算法框架+题目)

0、前言 深度优先搜索是DFS&#xff08;Depth Frst Search)&#xff0c;其实就是前面所讲过的回溯算法&#xff0c;它的特点和它的名字一样&#xff0c;首先在一条路径上不断往下&#xff08;深度&#xff09;遍历&#xff0c;获得答案之后再返回&#xff0c;再继续往下遍历。…...

微信小程序---登录

手机号登录 手机号快速验证和手机号实时验证区别 手机号快速验证组件&#xff0c;平台会对号码进行验证&#xff0c;但不保证是实时验证&#xff1b;收费0.0.3元手机号实时验证组件&#xff0c;在每次请求时&#xff0c;平台均会对用户选择的手机号进行实时验证。收费0.0.4元…...

IPython大师课:提升数据科学工作效率的终极工具

IPython是一个增强的Python交互式shell&#xff0c;它提供了丰富的功能和易用性改进&#xff0c;特别适合进行数据分析、科学计算和一般的Python开发。本文将全面介绍IPython的基本概念、使用方法、主要作用以及注意事项。 一、IPython简介 1. IPython的起源 IPython最初由Fe…...

抖音素材网站平台有哪些?素材下载网站库分享

在这个视觉信息充斥的时代&#xff0c;抖音已经成为众多自媒体人展示才华的舞台。要在众多创作者中脱颖而出&#xff0c;不仅需要独特的创意&#xff0c;还需要优质的素材来支持你的内容制作。今天&#xff0c;我将介绍几个为抖音视频提供高品质素材的网站&#xff0c;包括国内…...

MODBUS TCP协议实例数据帧详细分析

MODBUS TCP协议实例数据帧详细分析 1.简介 2.ModbusTCP数据帧 2.1.报文头MBAP 2.2.帧结构PDU 3.ADU详细结构 3.1. 0x01&#xff1a;读线圈 3.2. 0x02&#xff1a;读离散量输入 3.3. 0x03&#xff1a;读保持寄存器 3.4. 0x04&#xff1a;读输入寄存器 3.5. 0x05&#xff1a;写单…...

Spring Boot启动与运行机制详解:初学者友好版

Spring Boot启动与运行机制详解&#xff1a;初学者友好版 随着微服务的兴起和容器化部署的流行&#xff0c;Spring Boot以其快速搭建、简单配置和自动化部署的特性&#xff0c;成为了众多开发者的首选。对于初学者而言&#xff0c;理解Spring Boot的启动与运行机制是掌握其精髓…...

Ubuntu 22.04 解决 firefox 中文界面乱码

问题复现 在为Ubuntu 22.04 Server安装完整的GNOME 42.01桌面后&#xff0c;将桌面语言设置为中文时&#xff0c;打开Firefox可能会出现中文乱码的问题。经过网上调查发现&#xff0c;这个问题是由Snap软件包引起的。 解决方案 为了避免在Ubuntu 22.04中文模式下的乱码问题…...

前端面试题日常练-day77 【面试题】

题目 希望这些选择题能够帮助您进行前端面试的准备&#xff0c;答案在文末 在Sass中&#xff0c;以下哪个功能用于将样式规则应用于多个选择器&#xff1f; a) extend b) mixin c) import d) include Sass中的嵌套规则&#xff08;Nested Rules&#xff09;有助于实现以下哪个…...

团队协同渗透测试报告输入输出平台部署

目录 简介 文章来源 部署环境 文件下载 开始安装 系统初始化 免责声明 结语 简介 因应监管部需求&#xff0c;国内访问Docker源pull镜像开始变得复杂且困难起来了&#xff0c;大佬github给的在线/离线安装脚本跑了很久也无法拉取到镜像&#xff0c;所以将以前的镜像打…...

vue3-父子通信

一个简单的vue3子组件调用父组件方法的demo <template> <div> <h2>Parent Component父组件</h2> <ChildComponent notify-parent"handleParentMethod" /> </div> </template> <script> import { ref } fr…...

微信小程序—页面滑动,获取可视区域数据

需求&#xff1a;页面有一列表&#xff0c;获取可视区域的数据&#xff1b;滑动过程中不处理&#xff0c;停止滑动后才获取。 实现原理&#xff1a;获取列表中每个条目的位置信息&#xff08;元素顶部距可视区域顶部的距离&#xff09;&#xff0c;和可视区域比较&#xff0c;…...

C#语言进阶(一)—委托

总目录 C# 语法总目录 委托 委托1. 基本用法2.委托作为方法参数3.多播委托4.实例对象方法、静态方法与委托之间的关系5. 委托类型参数为泛型6. System空间下的 Func 委托和 Action 委托 委托 委托类似于CPP中的函数指针。它定义了一个方法类型&#xff0c;这个方法类型有返回类…...

VST3音频插件技术介绍

一.概述 1.VST3介绍 VST3&#xff08;Virtual Studio Technology 3&#xff09;是一种音频插件格式&#xff0c;由Steinberg公司开发&#xff0c;用于在数字音频工作站&#xff08;DAW&#xff09;中使用。VST3插件可以是模拟合成器、鼓机、混响器、压缩器等多种类型的音频处理…...

专门做瑜伽的网站/网站域名综合查询

另一种解法&#xff1a;将数组全部置1&#xff0c;累计相加到报数&#xff0c;则将该位置置为0&#xff0c;意为该位出列&#xff0c;如此反复。关键在于&#xff1a;把数组作环状处理&#xff0c;这个手法已经演练很多遍了&#xff01; /*------------完整代码映雪-----------…...

如何选择定制酒/济南seo网站优化

题目描述 按照层次遍历树&#xff08;即BFS&#xff09;&#xff0c;相同层级作为一个List放在一起放入作为结果的List。 解题思路 即BFS&#xff0c;按照广度优先去遍历树&#xff0c;关于树的BFS和DFS在笔者相关文章中有详述。 代码实现 public List<List<Integer…...

佛山三水区有没有网站建设公司/广州网络推广公司有哪些

2019独角兽企业重金招聘Python工程师标准>>> 数据的存储 #1.测试的相关概念 (了解) SUV 好的软件不是开发出来的是测试出来的jd 黑客当当&#xff1a; -10 1.测试是否知道源代码黑盒测试 不知道代码白盒测试 知道代码2.按照测试的粒度方法测试单元测试 Junit集成…...

深圳网站建设 卓/网络营销外包

1、数组内存大小判断方法 直接用关键词sizeof进行判断。 2、案例 2.1 源文件 andyandy-virtual-machine:~/GNU_C_Programming/unpakage_dir$ tree . ├── array.c └── sizeArray.c 0 directories, 2 files andyandy-virtual-machine:~/GNU_C_Programming/unpakage_dir$ …...

旅游网站的系统建设的意义/广州最新疫情情况

2019独角兽企业重金招聘Python工程师标准>>> 在原有 SSH 老项目中接入 JFinal 简单到不可思议&#xff0c;大致方法如下&#xff1a; 1&#xff1a;在现有 SSH 老项目的 web.xml 中添加 JFinalFilter&#xff0c;就跟一个全项目项目的方式完全一样 这里只需要注意一…...

网站做301需要备案吗/seo整站优化外包公司

settings.py用于设置屏幕的基本设置 # -*- coding: gbk -*- __author__ HZQ import pygame class Settings():存储所有设置def __init__(self):#屏幕大小设置self.screen_width 600self.screen_height 400#屏幕背景self.pwdE:\\Python35\\images\\bg.jpg#飞船速度设置se…...