1. 程式人生 > >每天進步一點點 時間會讓你成為巨人

每天進步一點點 時間會讓你成為巨人

1.下載mmseg4j
mmseg4j-core:核心庫檔案;
mmseg4j-solr:solr支援庫檔案;
mmseg4j-analysis:分析庫檔案;

下載地址:http://mvnrepository.com/search?q=mmseg4j
參考地址:https://github.com/chenlb/mmseg4j-solr
參考地址:https://code.google.com/p/mmseg4j/downloads/list
目前mmseg4j官網不提供新版本下載,在maven庫選擇下載;
solr4.0以上版本請下載mmseg4j1.9.0以上版本;
選擇mmseg4j1.9.1下載;

2.拷貝(mmseg4j-core-1.9.1.jar、mmseg4j-solr-1.9.1.jar、mmseg4j-analysis-1.9.1.jar)到tomcat下的webapps/solr/WEB-INF/lib;

3.在solr的home目錄新建dic字典目錄;

4.配置solr中文分詞器
開啟solr的home目錄的collection1/conf/schema.xml檔案;
複製

<!-- 複雜分詞器 -->
<fieldtype name="textComplex" class="solr.TextField" positionIncrementGap="100">
    <analyzer>
        <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="../dic"/><!--此處為分詞器詞典所處位置-->
    </analyzer>
</fieldtype>
<!-- 最大單詞分詞器 -->
<fieldtype name="textMaxWord" class="solr.TextField" positionIncrementGap="100">
    <analyzer>
        <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" />
    </analyzer>
</fieldtype>
<!-- 最小單詞分詞器 -->
<fieldtype name="textSimple" class="solr.TextField" positionIncrementGap="100">
    <analyzer>
        <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="../dic" /><!--此處為分詞器詞典所處位置-->
    </analyzer>
</fieldtype>

新增到<types></types>裡面;

5.修改中文分詞器欄位
把<fields></fields>裡的

<field name="title" type="text_general" indexed="true" stored="true" multiValued="true"/>
<field name="subject" type="text_general" indexed="true" stored="true"/>
<field name="description" type="text_general" indexed="true" stored="true"/>
<field name="comments" type="text_general" indexed="true" stored="true"/>
<field name="author" type="text_general" indexed="true" stored="true"/>
<field name="keywords" type="text_general" indexed="true" stored="true"/>

替換為

<field name="title" type="textComplex" indexed="true" stored="true" multiValued="true"/>
<field name="subject" type="textComplex" indexed="true" stored="true"/>
<field name="description" type="textComplex" indexed="true" stored="true"/>
<field name="comments" type="textComplex" indexed="true" stored="true"/>
<field name="author" type="textComplex" indexed="true" stored="true"/>
<field name="keywords" type="textComplex" indexed="true" stored="true"/>

6.開啟solr管理介面,選擇左側collection1的Analysis頁面;
Analyse Fieldname / FieldType選擇textComplex;

注:
針對mmseg4j-analysis.jar的bug處理
錯誤:
TokenStream contract violation: reset()/close() call missing, reset() called multiple times, or subclass does not call super.reset(). Please see Javadocs of TokenStream class for more information about the correct consuming workflow.

下載地址:https://code.google.com/p/mmseg4j/downloads/list
下載mmseg4j-1.9.1.zip,解壓得到裡面的mmseg4j-analysis資料夾;
找到MMSegTokenizer.java,修改reset()方法;

public void reset() throws IOException {
    //lucene 4.0
    //org.apache.lucene.analysis.Tokenizer.setReader(Reader)
    //setReader 自動被呼叫, input 自動被設定。
    super.reset();   //加這一句
    mmSeg.reset(input);
}

修改後執行mvn clean package -DskipTests進行打包得到最新的mmseg4j-analysis-1.9.1.jar 並替換tomcat下solr的WEB-INF/lib/mmseg4j-analysis-1.9.1.jar。