Elasticsearch插件IK分词器中的停用词过滤
为什么要使用停用词
在Elasticsearch中,自定义词典和停用词过滤是优化中文搜索效果的核心手段。自定义词典用于补充领域专属词汇、修正分词结果,停用词过滤用于剔除无实际语义的高频词(如“的”“是”“在”),减少索引冗余并提升查询准确性。
IK分词器中如何使用停用词
Elasticsearch中安装好analysis-ik中文插件后,在config/analysis-ik目录下,有两个停用词文件:stopword.dic和extra_stopword.dic。stopword.dic是英文停用词,默认是生效的,extra_stopword.dic是中文停用词,默认是不生效的。
1、查看stopword.dic(英文停用词)默认是否生效
curl -X POST "https://127.0.0.1:9200/_analyze?pretty" -H'Content-Type:application/json' -d'{"analyzer":"ik_max_word","text":"She is a beautiful girl"}' -u elastic:654321 -k
分词结果:she、beautiful、girl,而is和a因为是停用词而没有出现,stopword.dic(英文停用词)默认生效
2、查看extra_stopword.dic(中文停用词)默认是否生效
curl -X POST "https://127.0.0.1:9200/_analyze?pretty" -H'Content-Type:application/json' -d'{"analyzer":"ik_max_word","text":"也了仍电脑"}' -u elastic:654321 -k
分词结果:也、了、仍、电脑,extra_stopword.dic(中文停用词)默认不生效
3、如何让extra_stopword.dic(中文停用词)生效
我们可以配置IK Analyzer的配置文件以加载这个停用词文件
编辑/config/analysis-ik/IKAnalyzer.cfg.xml
<properties><comment>IK Analyzer 扩展配置</comment><!--用户可以在这里配置自己的扩展停止词字典--><entrykey="ext_stopwords">extra_stopword.dic</entry></properties>
保存文件后,重新启动Elasticsearch,再次查看extra_stopword.dic(中文停用词)是否生效:
curl -X POST "https://127.0.0.1:9200/_analyze?pretty" -H'Content-Type:application/json' -d'{"analyzer":"ik_max_word","text":"也了仍电脑"}' -u elastic:654321 -k
分词结果:电脑,extra_stopword.dic(中文停用词)已经生效,也、了、仍是停用词,已经没有出现了
注
1、不同领域的停用词可能是不同的
比如电商领域,停用词可能是商品、产品、购买等高频低价值词
社交媒体,停用词可能是分享、点赞、评论等平台通用词
2、谨慎选择停用词
过度过滤会丢失语义信息
3、区分索引与查询分析器
可在索引时使用严格停用词,查询时使用宽松策略(甚至不禁用),以提高召回率
4、结合同义词处理
停用词与同义词常配合使用,构建更智能的搜索体验
5、监控与迭代
通过用户搜索日志分析高频无效词,持续优化停用词表
Elasticsearch 6.4.0版本 相关文章:
Elasticsearch中的read_only_allow_delete
Elasticsearch 8.17.0版本 相关文章:
Spring Boot(二十五):Elasticsearch的特性、应用场景和核心概念
Spring Boot(二十六):Elasticsearch的常用REST API
Spring Boot(二十七):Spring Boot与其他软件的版本兼容
Spring Boot(二十八):Elasticsearch在Spring Boot中的使用
更多内容,请关注公众号:
夜雨聆风
