elasticsearch對無意義的詞進行屏蔽——停用詞


介紹

在使用elasticsearch進行搜索業務的時候,發現一篇和搜索關鍵字完全不匹配的文章排在最前面.打開它發現原來是這篇文章含有非常多的"的"這個無意義的詞.而我的搜索關鍵字假設為"歷史上的

今天",它可能就被ik_max_word分詞后,剛好就有"的"這個詞.所以會造成一篇含有很多"的"的文章,即使跟搜索關鍵字無關,也可能得分很高,排在前面.

那么我們需要做的就是如何對這些無意義的詞——停用詞進行屏蔽.

 

操作

其實這個問題很好解決,如果你使用ik分詞器,其實都為你解決了.但是它默認設置的停用詞都是英文的,比如AND,OR等等

那么在哪里配置呢?找到你的es安裝插件的文件夾,進入ik分詞器的配置文件中,比如我的是

D:\elasticsearch-7.0.0\plugins\ik\config

打開它發現會有stopword.dic和extra_stopword.dic

 

 

打開會發現stopword.dic里面的都為配置的英文停用詞,而extra_stopword.dic里面的都為配置的中文停用詞

但是我發現在extra_stopword.dic中是有"的"啊.怎么沒有效果呢?

原來我們還需要在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>

如此便配置好了

我們再次搜索就會驚喜的發現,那篇含有無意義的詞的文章便搜索不到了.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM