solr中mmseg4j自定義詞庫配置
阿新 • • 發佈:2018-12-30
<fieldType name="textComplex" class="solr.TextField" positionIncrementGap="100" > <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="/data/web/search_cores/multicore/dic"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="com.chenlb.mmseg4j.solr.CutLetterDigitFilterFactory"/> </analyzer> </fieldType> <fieldType name="textMaxWord" class="solr.TextField" positionIncrementGap="100" > <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" dicPath="dic"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> </fieldType> <fieldType name="textSimple" class="solr.TextField" positionIncrementGap="100" > <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="dic"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> </fieldType>
主要是紅色部分(dicPath="/data/web/search_cores/multicore/dic"/>),可以使用相對solr.home的地址,或者絕對地址。經過分析mmseg4j原始碼發現,如果不指定就是預設在 CWD/data 目錄(程式運行當前目錄的data子目錄)下找.如果填的是相對地址,則是相對solr.home的路徑。當然,最好使用絕對地址,相對的容易出錯,不好debug。
- resin伺服器配置的solr.home:
<web-app id="/" document-directory="/data/web/projects/xiaozhao-solr"> <stdout-log path="/data/logs/zhaopin-resin_solr-stdout.log" timestamp="[%H:%M:%S.%s]" rollover-period="1D"/> <stderr-log path="/data/logs/zhaopin-resin_solr-stderr.log" timestamp="[%H:%M:%S.%s]" rollover-period="1D"/> <character-encoding>utf-8</character-encoding> <env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-type>java.lang.String</env-entry-type> <env-entry-value>/data/web/search_cores/multicore</env-entry-value> </env-entry> </web-app>
- 不加詞庫效果如下:
- 自定義詞庫只要放到/data/web/search_cores/multicore/dic目錄下,以words開頭,dic結尾,每行一個詞即可。如:words-my.dic
白雲山
I
B
M
3
二次修改
加入自定義詞後分詞效果如下:
從上圖可以看出,自定義詞庫已經生效。
遺留問題:加入英文字母后,分詞效果仍沒有,目前只對中文分詞生效,英文如果想對單個字母分詞,需要進一步分析。有知道的朋友,歡迎留言~