1. 程式人生 > >搜尋引擎solr系列---solr分詞配置

搜尋引擎solr系列---solr分詞配置

  分詞我理解的是,輸入的一句話,按照它自己定義的規則分為常用詞語。

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

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

Solr分詞的配置如下:

2.將該分詞jar包放到你的solr執行tomcat中的webapps/solr/WEB-INF/lib資料夾中,例如我的是D:\Tomcat9Solr\webapps\solr\WEB-INF\lib。

3.然後,在你的solrHome下的某個core/conf資料夾中,找到manage-schema檔案,在改檔案中的最下邊新增配置如下內容:

<fieldType name="text_ik" class="solr.TextField">
    <analyzer type="index" useSmart="false"
class="org.wltea.analyzer.lucene.IKAnalyzer" /> <analyzer type="query" useSmart="true" class="org.wltea.analyzer.lucene.IKAnalyzer" /> </fieldType>

4.然後還是在這個manage-schema檔案中,找到你想配置分詞的欄位,將其type改為text_ik型別:

 這裡以dkdz為例,設定之前,在solr客戶端檢視是如下結果:
不好意思,我圖貼錯了,下邊的3處應該是dkdz,不是dkbm!!


這裡寫圖片描述

 配置分詞如下:

這裡寫圖片描述

 配置之後,在solr客戶端的core admin中,reload該core,再次檢視,變成如下頁面:

這裡寫圖片描述

  如果變成了上邊這種結果,就說明分詞成功了。對於分詞後的欄位,如果在查詢結果上有歧義,最好是來到solr客戶端的上邊位置,看下你的條件是不是因為分詞,給分成了不是你想要的那種結果。

下一篇寫,分詞新增自定義擴充套件詞庫