天天看點

【Solr】之中文分詞及IK庫的安裝使用-4

一、什麼是分詞

首先,Solr有自己基本的類型,string、int、date、long等等。

  對于string類型,比如在你的core/conf/manage-schema檔案中,配置一個字段類型為string類型,如果查詢符合“我是中國人”的資料,它就認為“我是中國人”是一個詞語。

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

二、配置目地

就是讓solr能對中文進行分詞

【Solr】之中文分詞及IK庫的安裝使用-4

三、分詞器的選擇

之前我們使用jieba分詞,效果不是很好。

現在有個非常牛的分詞器,IK 分詞器,效果非常好,如果你一直使用solr 那麼以後将一直使用IK分詞器

中文分詞在solr裡面是沒有預設開啟的,需要自己配置一個中文分詞器。

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

主流還是ik,可以擴充自己的詞庫,非常友善,加入一些熱搜詞,主題詞,對于搜尋而言,非常友善

四、分詞器的的配置

4.1 下載下傳

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

4.2 解壓檔案及說明

ext.dic自定義詞 如沙雕 在漢語裡面不是一個詞 ,它隻是一個網絡用語,可以配置到這=裡面讓它成為一個詞

stopword.dic 停止字典 如 啊 吧 唉 不作分詞

IKAnalyzer.cfg.xml配置ik的配置檔案 不用改

Jar:如果要使用ik分詞要導入的jar包

4.3 修改managed-schema

UseSmart 和分詞的粒度相關:

False: 分詞的粒度大,一句話裡面分的詞語少

True:分詞的粒度細,一句話裡面分的詞語多

那我們在導入時需要的關鍵字多嗎?讓索引的資料量少一點。我們的粒度大:False

我們在搜尋時需要的關鍵字多嗎?我們想盡可能的覆寫所有的範圍,我們的粒度要細:True

<!--添加一個中文分詞器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>      

4.4 把修改managed-sahma覆寫到solr

【Solr】之中文分詞及IK庫的安裝使用-4

4.5 重新開機solr

【Solr】之中文分詞及IK庫的安裝使用-4

4.6 檢視分析出現錯

産生原因是因為我們隻添加發分詞

但是ik想要運作必須要加入相關的配置

【Solr】之中文分詞及IK庫的安裝使用-4

上面的配置沒有加入

4.7 把IK的配置入到solr

4.7.1,放入jar包

【Solr】之中文分詞及IK庫的安裝使用-4

4.7.2,放配置

在/usr/local/solr-7.7.2/server/solr-webapp/webapp/WEB-INF建立一個classes

【Solr】之中文分詞及IK庫的安裝使用-4

4.8,重新開機solr分析

【Solr】之中文分詞及IK庫的安裝使用-4

4.9存在問題

【Solr】之中文分詞及IK庫的安裝使用-4

要索引時要遵循一個原因

1,索引時分詞的要盡量少

2,搜尋時分詞盡量多

【Solr】之中文分詞及IK庫的安裝使用-4

改完重新覆寫,重新開機測試

【Solr】之中文分詞及IK庫的安裝使用-4

到此為止,全部配置成功!!!

五、使用IK分詞器

5.1 添加一個屬性

【Solr】之中文分詞及IK庫的安裝使用-4

添加資料測試下

【Solr】之中文分詞及IK庫的安裝使用-4

檢視分詞

【Solr】之中文分詞及IK庫的安裝使用-4

查詢測試

【Solr】之中文分詞及IK庫的安裝使用-4

5.2 ext.dic的說明

繼續閱讀