Solr學習總結(八)IK 中文分詞的配置和使用


  最近,很多朋友問我solr 中文分詞配置的問題,都不知道怎么配置,怎么使用,原以為很簡單,沒想到這么多朋友都有問題,所以今天就總結總結中文分詞的配置吧。

 

  有的時候,用戶搜索的關鍵字,可能是一句話,不是很規范。所以在 Solr 中查詢出的時候,就需要將用戶輸入的關鍵字進行分詞。

 

  目前有很多優秀的中文分詞組件。本篇只以  IKAnalyzer 分詞為例,講解如何在 solr  中及集成中文分詞,使用 IKAnalyzer的原因 IK 比其他中文分詞維護的勤快,和 Solr 集成也相對容易。具體就不多介紹,這里直接solr 集成 IK 的方法。

 

  1. 首先,下載IKAnalyzer下載

    注意:以前老的IK 不支持Solr 5.3的版本 ,請注意下載最新的。

 

  2. 將ik的相關文件 拷貝到 webapps\solr\WEB-INF\lib 目錄下

 

  3. 在 solr_home\mycore1\conf\schema.xml 增加如下配置

         <!-- 我添加的IK分詞 -->
         <fieldType name="text_ik" class="solr.TextField">   
                   <analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>   
                   <analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>   
         </fieldType>

   同時,把需要分詞的字段,設置為text_ik,

  <field name="id" type="int" indexed="true" stored="true" required="true" multiValued="false" />
   <field name="name" type="text_ik" indexed="true" stored="true" required="true" multiValued="false" />
   <field name="title" type="text_ik" indexed="true" stored="true" required="true" multiValued="false" />
   <field name="category" type="int" indexed="true" stored="true" required="true" multiValued="false" />
   <field name="content" type="text_ik" indexed="true" stored="true" required="true" multiValued="false" />
   <field name="price" type="double" indexed="true" stored="true" required="true" multiValued="false" />
   <field name="color" type="string" indexed="true" stored="true" required="true" multiValued="false" />
   <field name="orderBy" type="int" indexed="true" stored="true" required="true" multiValued="false" />
   <field name="updatetime" type="date" indexed="true" stored="true" required="true" multiValued="false" />

 

  4. 重啟服務

    注意:如果之前已經創建了索引,需要將之前的索引刪掉,重新創建分詞后的索引。

 

  5. 在admin后台, analysis 下查看分詞效果

    1. 中文分詞效果

    

    2. 索引查詢效果

    

 

  6. 配置IKAnalyzer分詞器的擴展詞典,停止詞詞典

    1. 將 文件夾下的IKAnalyzer.cfg.xml , ext.dic和stopword.dic 三個文件 復制到/webapps/solr/WEB-INF/classes 目錄下,並修改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">ext.dic;</entry> 

        <!--用戶可以在這里配置自己的擴展停止詞字典-->
        <entry key="ext_stopwords">stopword.dic;</entry> 
    </properties>

    2. 在ext.dic 里增加自己的擴展詞典,例如,嬰兒奶粉3段

     

 

    注意:  記得將stopword.dic,ext.dic的編碼方式為UTF-8 無BOM的編碼方式。 

 


免責聲明!

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



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