【ElasticSearch】IK分词器中停用词问题

embedded/2024/9/24 4:24:28/

问题描述

在ES中进行部分关键词搜索时,搜索无结果,如搜索 【IT】

环境描述

中文分词插件

这里使用的是 analysis-ik

分词调试

POST test_index/_analyze
{"text":"IT Manager","analyzer": "ik_max_word"
}

分词结果,分词结果中不包含IT

{"tokens": [{"token": "manager","start_offset": 3,"end_offset": 10,"type": "ENGLISH","position": 0}]
}

原因分析

根据项目:lucene
我们可以看到在 cjk(中文、日文和韩文)目录下的停用词中,包含了该停用词,从而导致索引中不会包含该停用词。
在这里插入图片描述
项目:https://github.com/infinilabs/analysis-ik 中的停用词,extra_stopword.dic
在这里插入图片描述

解决方案

在实践过程中,我们通过自定义stopword的方式(如下定义),无法解决该问题

{"settings": {"analysis": {"filter": {"chinese_stop": {"type":       "stop","stopwords":  [] }},"analyzer": {"ik_max_word_custom": {"type":       "custom","tokenizer":  "ik_max_word","filter": ["chinese_stop"]}}}}
}

方案一:
在配置文件中移除相应的停用词
在这里插入图片描述
该方式效果如下:
分词请求:

POST test_index/_analyze
{"text":"IT Manager","analyzer": "ik_max_word"
}

分词结果:

{"tokens": [{"token": "it","start_offset": 0,"end_offset": 2,"type": "ENGLISH","position": 0},{"token": "manager","start_offset": 3,"end_offset": 10,"type": "ENGLISH","position": 1}]
}

方案二:
我们可以将对应的字段使用standard分词器存储到另一个字段,如 field.en ,在匹配的时候,两个字段同时进行匹配即可
值得注意的是,这里我们不能去使用english的分词器,一个是因为 english 中也会过滤掉一些停用词,如这里的【IT】,另外其还会自动索引为词根。


http://www.ppmy.cn/embedded/37255.html

相关文章

国家电网某地电力公司网络硬件综合监控运维项目

国家电网某地电力公司是国家电网有限公司的子公司,负责当地电网规划、建设、运营和供电服务,下属多家地市供电企业和检修公司、信息通信公司等业务支撑实施机构。 项目现状 随着公司信息化建设加速,其信息内网中存在大量物理服务器、存储设备…

pgsql和mysql比较

pgsql相对于mysql的优势主要体现在以下几个方面: 稳定性和可靠性:PostgreSQL的稳定性极强,即使在崩溃、断电等灾难场景下也能表现出很好的抗打击能力。相比之下,很多MySQL用户都遇到过Server级的数据库丢失的情况。此外&#xff…

【软测学习笔记】Python入门Day02

🌟博主主页:我是一只海绵派大星 📚专栏分类:软件测试笔记 📚参考教程:黑马教程❤️感谢大家点赞👍收藏⭐评论✍️ python安装 1、进入Python的官方下载页面: Download Python | Py…

VMware导入ova/ovf虚拟机文件

1.文件-打开-ova文件 2.为新虚拟机起名称 3.等待导入 4.导入完成,可以开始使用 参考链接:VMware导入ova/ovf虚拟机文件

如何更好地使用Kafka? - 运行监控篇

要确保Kafka在使用过程中的稳定性,需要从kafka在业务中的使用周期进行依次保障。主要可以分为:事先预防(通过规范的使用、开发,预防问题产生)、运行时监控(保障集群稳定,出问题能及时发现&#…

Pascal Content数据集

如果您想使用Pascal Context数据集,请安装Detail,然后运行以下命令将注释转换为正确的格式。 1.安装Detail 进入项目终端 #即 这是在我自己的项目下直接进行克隆操作: git clone https://github.com/zhanghang1989/detail-api.git $PASCAL…

Chromium编译指南2024 Windows11篇-Git工具准备(四)

前言 在《Chromium编译指南2024(三)》中,我们已经完成了对 Chromium 编译环境的其他相关环境变量的设置, 接下来,我们将进一步探讨如何初始化配置 Git,为获取 Chromium 源代码做好准备。 1. 配置Git 用户…

gdb如何指定调试程序的参数,如何指定断点和调试?(--args、set args、break xxx、s、n)

文章目录 快速回忆指定调试命令的参数方法1:启动执行前:-\-args方法2:启动后:arg 如何指定断点和调试 快速回忆 gdb --args program_name arg1 arg2 arg3 (gdb) set args arg1 arg2 arg3break xxxfunc info break #查看有哪些断点…