Solr(四)中文分詞及IK庫的使用

目錄

1. 概述

1.1 分詞:

1.2 配置目的

1.3 分詞器的選擇

2. 分詞器的配置

2.1 下載

2.2 修改managed-sahma

2.3 把IK的配置入到solr

2.4 重啓solr分析

2.5  存在問題

3.中文分詞如何使用到屬性上

3.1 添加一個屬性

3.2 添加數據

3.3 查看分詞

3.4 查詢測試

4. 自定義分詞


1. 概述

1.1 分詞:

指將一箇中文詞語拆成若干個詞,提供搜索引擎進行查找,比如說:北京大學 是一個詞那麼進行拆分可以得到:北京與大學,甚至北京大學整個詞也是一個語義。可以理解爲,輸入的一句話,按照它自己定義的規則分爲常用詞語。

首先,Solr有自己基本的類型,string、int、date、long等等。對於string類型,比如在你的core/conf/manage-schema文件中,配置一個字段類型爲string類型,如果查詢符合“我是中國人”的數據,它就認爲“我是中國人”是一個詞語。

但是如果你將該字段設置成了分詞,即配置成了text_ik類型,就可能匹配“我”、“中國人”、“中國”、“中”、“人”帶有這些字的該字段數據都可能被查詢到。這就是分詞帶來的結果。具體要按照各自的業務來配置是否分詞,分詞對於大文本字段設置是合理的,但是對於小字段,設置分詞是沒必要的,甚至有相反的結果。比如你的某一個叫姓名的字段設置了分詞,還不如設置string,查詢時模糊匹配效果最好,(模糊匹配就是查詢條件兩邊加上*),當然也要看自己業務需求是什麼。

1.2 配置目的

通過配置讓solr能對中文進行分詞

1.3 分詞器的選擇

之前我們使用jieba分詞,效果不是很好。現在有個非常牛逼的分詞器,IK 分詞器,效果非常好,如果你一直使用solr 那麼以後將一直使用IK分詞器。中文分詞在solr裏面是沒有默認開啓的,需要自己配置一箇中文分詞器。

目前可用的分詞器有smartcnIKJeasy,庖丁。其實主要是兩種,一種是基於中科院ICTCLAS的隱式馬爾科夫HMM算法的中文分詞器,如smartcnictclas4j,優點是分詞準確度高,缺點是不能使用用戶自定義詞庫;另一種是基於最大匹配的分詞器,如IK Jeasy,庖丁,優點是可以自定義詞庫,增加新詞,缺點是分出來的垃圾詞較多。各有優缺點。

主流還是ik,可以擴展自己的詞庫,非常方便,加入一些熱搜詞,主題詞,對於搜索而言,非常方便 

2. 分詞器的配置

2.1 下載

下載ik (5及以上版本通用)

 http://files.cnblogs.com/files/zhangweizhong/ikanalyzer-solr5.zip

  • ext.dic自定義詞  如沙雕  在漢語裏面不是一個詞  ,它只是一個網絡用語,可以配置到這裏面讓它成爲一個詞  
  • stopword.dic  停止字典, 如:啊  吧   唉   不作分詞
  • IKAnalyzer.cfg.xml配置ik的配置文件 不用改
  • Jar:如果要使用ik分詞要導入的jar包

2.2 修改managed-sahma

  <!--添加一箇中文分詞器IK-->
  <fieldType name="text_cn" class="solr.TextField" positionIncrementGap="100"> 
      <analyzer type="index">
       <tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory" useSmart="false"/>
      </analyzer>
      <analyzer type="query">
       <tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory" useSmart="true"/>
      </analyzer>
    </fieldType>

useSmart 和分詞的粒度相關:

  • false: 分詞的粒度大,一句話裏面分的詞語少
  • true:分詞的粒度細,一句話裏面分的詞語多

那我們在導入時需要的關鍵字多嗎?讓索引的數據量少一點。我們的粒度大:false;我們在搜索時需要的關鍵字多嗎?我們想盡可能的覆蓋所有的範圍,我們的粒度要細:true

把修改後的managed-sahma覆蓋到solr

2.3 把IK的配置入到solr

2.3.1 放入jar包

/usr/local/solr-7.7.3/server/solr-webapp/webapp/WEB-INF/lib

2.3.2 放配置

在目錄/usr/local/solr-7.7.3/server/solr-webapp/webapp/WEB-INF下創建一個classes目錄

2.4 重啓solr分析

2.5  存在問題

索引時要遵循一個原則:

  • 索引時分詞的要儘量少
  • 搜索時分詞儘量多

修改配置:

3.中文分詞如何使用到屬性上

3.1 添加一個屬性

3.2 添加數據

3.3 查看分詞

3.4 查詢測試

爲什麼pro3有  pro沒有 因爲ik分詞時認爲pro3是一個詞  而pro不是詞

4. 自定義分詞

如:“大豬蹄子”默認並不是一個詞

在ext.dic裏添加一個自定義的詞

重啓測試

 

申明:內容來自網絡,僅供學習使用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章