elasticsearch之ik分词器和自定义词库实现

news/2024/10/1 23:29:30

ElasticSearch分词器

所谓的分词就是通过tokenizer(分词器)将一个字符串拆分为多个独立的tokens(词元-独立的单词),然后输出为tokens流的过程。

例如"my name is HanMeiMei"这样一个字符串就会被默认的分词器拆分为[my,name,is HanMeiMei].ElasticSearch中提供了很多默认的分词器,我们可以来演示看看效果

 但是在ElasticSearch中提供的分词器对中文的分词效果都不好。

 所以这时我们就需要安装特定的分词器 IK,在https://github.com/medcl/elasticsearch-analysis-ik 下载对应的版本,然后解压缩

因为第一次启动docker容器的时候进行了数据卷的挂载

docker run -d \
--name es \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
-e "discovery.type=single-node" \
-v es-data:/usr/share/elasticsearch/data \
-v es-plugins:/usr/share/elasticsearch/plugins \
--privileged \
--network es-net \
-p 9200:9200 \
-p 9300:9300 \
elasticsearch:7.12.1

所以直接将解压缩后的包拖到

 这个目录下

最后重启es容器

ik分词演示

ik_smart分词

# 通过ik分词器来分词
POST /_analyze
{
"analyzer": "ik_smart"
,"text": "我是中国人,我热爱我的祖国"
}

 

ik_max_word

POST /_analyze
{
"analyzer": "ik_max_word"
,"text": "我是中国人,我热爱我的祖国"
}

 拓展词库和停用词典

在我们使用过程中我们会发现,一些新兴词汇不会被添加到词库中,如:奥里给。。。并且不是所有的词作者在编写分词器时都会知道。还有一些不敏感词汇如“的”,“了”都会被分词,占用了我们一部分内存,所以我们需要停用这些词汇

具体操作如下:

 

 打开shell控制台,找到对应的xml文件,在里面进行相应的修改

 然后在config目录下新建ext.dic

直接在里面添加你想要的词汇就行

 stopword.dic在config文件夹里面有,就不用新建了,直接打开添加你想要屏蔽的词汇就行

 最后重启一下服务

 最后测试一下生效了没

 

 能看到确实有效,ok了老铁。还有其他更多的内容去官网上看吧。拜拜了

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

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

相关文章

Oracle报错:“Error in invoking target ‘agent nmhs’ of makefile...”

Oracle报错:“Error in invoking target ‘agent nmhs’ of makefile...”前言:Oracle在安装过程中的报错一定要重视,这决定你后续是否能完成安装以及是否能使用。我这边会陆续汇总一些报错现象以及解决方案共享。##Install Product 86%报错信息 :“Error in invoking targ…

VSCode_运行unittest用例:提示文件-test未运行,控制台提示缺少env

如下图:解决方法: a.vscode安装插件:Python Extension Pack。 b.安装成功,重新打开VS Code窗口

从零开始写 Docker(十八)---容器网络实现(下):为容器插上”网线“

本文为从零开始写 Docker 系列第十八篇,利用 linux 下的 Veth、Bridge、iptables 等等相关技术,构建容器网络模型,为容器插上”网线“。完整代码见:https://github.com/lixd/mydocker 欢迎 Star推荐阅读以下文章对 docker 基本实现有一个大致认识:核心原理:深入理解 Dock…

Windows Server 2012 R2部署网站后IIS,只要访问网址应用程序池就自动停止,浏览器页面提示HTTP Error 503. The service is unavailable.

解决方案:1.查看windows日志通过文件资源管理器查看:打开文件资源管理器,找到“我的电脑”。 右键点击“管理”。 在弹出的窗口中,点击“事件查看器”。 在事件查看器中,点击“Windows日志”即可查看各种日志信息   2.找到错误信息3.

C#中使用AutoResetEvent或者ManualResetEvent做线程管理

1. Task/thread/sync/async..await/WhenAll 相关基础知识参见此处链接 2. 什么是AutoResetEvent和ManualResetEvent事件他们都是C#中System.Threading下面的类。用于在多个线程之间进行事件通知和管理。 他们的管理方法主要是三个:Reset():关闭 WaitOne():阻挡 Set():启动A…

ABC357

A link循环加每一个数,加到哪个数不能加了输出前一个数,注意如果加到最后还能加,记得输出\(n\)。点击查看代码 #include<bits/stdc++.h>using namespace std;int n,m; int h[105],sum;signed main(){cin >> n >> m;for(int i = 1;i <= n;++ i)cin >…

文献收获_2024.06.11

Pancreatic Tumor Segmentation as Anomaly Detection in CT Images Using Denoising Diffusion Models 来源:https://arxiv.org/pdf/2406.02653DDM做image translation实现胰腺分割 下面的是金标准Anomaly map 差值出来的Segmentation map 算dice系数,用于下游分类评价表格 …

极限网关助力好未来 Elasticsearch 容器化升级

极限网关在好未来的最佳实践案例,轻松扛住日增百 TB 数据的流量,助力 ES 从物理机到云原生架构的改造,实现了流控、请求分析、安全管理、无缝迁移等场景。一次完美的客户体验~背景 物理机架构时代 2022 年,好未来整个日志 Elasticsearch 拥有数十套服务集群,几百台物理机。…