ik與拼音分詞器,拓展熱詞/停止詞庫


說明:本篇文章講述elasticsearch分詞器插件的安裝,熱詞庫停止詞庫的拓展,文章后面提到elasticsearch ,都是以es簡稱。

          以下分詞器的安裝以ik分詞器和pinyin分詞器為例說明,使用的操作系統是Linux,使用的分詞器器版本是6.5.4版本,對應的es版本也是6.5.4(寫這篇文章時對應最新es是7.2版本),這里需要強調的是分詞器插件和es版本一定要一致,否則容易導致問題,比如,

          我的pinyin分詞器最早使用的是6.5.2,覺得與es版本相差不遠,應該能支持,實際安裝后,因為pinyin分詞器版本問題導致es啟動失敗。

1、ik分詞器的安裝(Linux)

     下載6.5.4版本的ik分詞器,下載地址:https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.5.4/elasticsearch-analysis-ik-6.5.4.zip

     安裝:

            1.1 、將分詞器拉取到es安裝所在服務器的es安裝主目錄的{ES_HOME}/plugins 目錄下

            1.2、解壓ik分詞器 unzip elasticsearch-analysis-ik-6.5.4.zip -d ik

            1.3、重啟es服務器

            1.4、執行命令 cd {ES_HOME}/logs 切換到日志目錄,tail -1000f elasticsearch.log 看下是否日志報錯,沒有報錯說明啟動正常,安裝插件成功

2、ik分詞器擴展

       2.1、切換到剛剛安裝的ik分詞器插件配置目錄目錄  cd {ES_HOME}/plugins/ik/config

       2.2、執行ls 命令可以看到,以下文件列表:extra_main.dic  extra_single_word.dic  extra_single_word_full.dic  extra_single_word_low_freq.dic  extra_stopword.dic  IKAnalyzer.cfg.xml  main.dic  preposition.dic  quantifier.dic  stopword.dic  suffix.dic  surname.dic

      2.3、以上看到的.dic結尾的 文件,是ik的一些默認詞庫,實際上你可以打開修改默認詞庫,但是需要重建索引,並且重新導入數據才會生效。

      2.4、這里比較重要的文件是IKAnalyzer.cfg.xml,執行 vi 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"></entry>
        <!--用戶可以在這里配置遠程擴展字典 -->
        <entry key="remote_ext_dict">http://deploy_ip:port/myweb/myHotDic.txt</entry>
        <!--用戶可以在這里配置遠程擴展停止詞字典-->
        <!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

      這里可以添加自己拓展字典,也可以遠程擴展,這里結合業務邏輯拓展遠程字典,這樣就可以通過地址直接訪問這些字典,遠程拓展字典可以通過web服務來維護,配置好后,重啟es,使得配置生效。

     重啟后, 在新增熱詞字段,不需要重啟,但時有個問題,就是對於已經同步入庫的(即歷史同步的數據),新增加的熱詞無法生效。

3、拼音分詞器安裝

     下載6.5.4版本的pinyini分詞器,下載地址:https://github.com/medcl/elasticsearch-analysis-pinyin/releases/download/v6.5.4/elasticsearch-analysis-pinyin-6.5.4.zip

 

     1.1 、將分詞器拉取到es安裝所在服務器的es安裝主目錄的{ES_HOME}/plugins 目錄下

     1.2、解壓ik分詞器 unzip elasticsearch-analysis-pinyin-6.5.4.zip -d pinyin

     1.3、重啟es服務器

     1.4、執行命令 cd {ES_HOME}/logs 切換到日志目錄,tail -1000f elasticsearch.log 看下是否日志報錯,沒有報錯說明啟動正常,安裝插件成功。

結語:分詞器雖好,但是了解一些分詞器特定是必要,比如,ik分詞器將"普通高中"分隔為一個詞,這樣如果搜索內容中包含這個,搜索"高中"這個詞是搜索不到的,但是如果,內容里面包含”普通的高中“,那么搜索”高中“就可以搜索到這條內容。

          另外,分詞器拓展熱詞庫在web服務里面維護終究需要人肉去做的,如果能夠在搜索過程中自動提取熱詞並且拓展ik不存在的,而又需要的熱詞就完美了

 

  相關文章:使用logstash同步mysql數據到elasticsearchelasticsearch相關性打分背后的理論

     

 

     

        

 


免責聲明!

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



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