elasticsearch 中文停用词设置
在使用 elasticsearch 进行搜索的时候,经常会发现一篇和搜索关键字完全不匹配的文章排在最前面。它可能就被 ik_max_word 分词后,刚好就有类似 "的" 这样的无意义词,导致造成一篇含有很多无意义词的文章得到一个较高的评分。
那么一个有效的解决办法就是对这些无意义的词——停用词进行屏蔽。
解决方案
如果你使用 ik 中文分词器,它默认设置的停用词都是英文的,比如 AND、OR 等。
配置文件在 elasticsearch-7.x.x\plugins\ik\config\
目录下,打开目录可以看到有 stopword.dic
和 extra_stopword.dic
两个文件。stopword.dic
里面的为配置的英文停用词,extra_stopword.dic
里面为配置的中文停用词。
默认是使用 stopword.dic
的,想要使用 extra_stopword.dic
的话是需要在 ik
中进行配置的,配置文件为 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"></entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords">extra_stopword.dic</entry>
<!--用户可以在这里配置远程扩展字典 -->
<!-- <entry key="remote_ext_dict">words_location</entry> -->
<!--用户可以在这里配置远程扩展停止词字典-->
<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
配置完成后重启 elasticsearch,就可以发现停用词已经不再对搜索产生影响了。