1. 程式人生 > >Solr之SolrCloud配置mmseg4j同義詞

Solr之SolrCloud配置mmseg4j同義詞

前提,已經安裝配置好Tomcat與Solr,並且配置好mmseg4j中文分詞。

1.修改$SOLR_HOME/collection1/conf/schema.xml
在fields節點下面的mmseg4j分詞器相關配置修改為類似於如下的內容:

<fieldType name="textSimple" class="solr.TextField" >
	<analyzer type="index">
	 <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="solr_home/testcollection/conf/mm4jdic"/>
	  <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
	</analyzer>
	<analyzer type="query">
	 <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="solr_home/testcollection/conf/mm4jdic"/>
	  <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
	</analyzer>
</fieldType>

2.修改$SOLR_HOME/testcollection/conf/synonyms.txt
在裡面加入你認為中同義詞的資料,形如:
手機 => 行動電話
大陸 => 中國
需要將此檔案儲存為UTF-8格式。如果是用UltraEdit編輯,可以在選單中選擇“檔案”-》“轉換”-》“ASCII到UTF-8”即可。記事本編輯的話,選單選擇“另存為”,編碼型別選擇UTF-8即可。
3.所有複雜的同義詞(就是還不在詞庫中的詞),應該在自定義詞典中有設定
如:“行動電話”這個詞應該在mmseg4j的自定義詞典中已經配置,否則建立索引的時候根本有沒有“行動電話”這個詞,查詢“手機”的時候,是不可能把“行動電話”查詢出來的。mmseg4j自定義詞典的路徑,按前文的設定是在$SOLR_HOME/testcollection/conf/mm4jdic/words-my.dic檔案中。
4.同義詞只能出現一次
即如果已經配置了“大陸 => 中國”,那麼是不能再配置“中國 => 中華人民共和國”這樣的詞條的,否則後一條將覆蓋前一條的資訊。
5.重新啟動Tomcat
即可以在查詢中使用同義詞。比如:查詢“大陸”,會將“中國”的資訊全部顯示出來。