Solr是在schema.xml(managed-schema)中配置Analyzer口锭。
注意:在Solr 6.1.0的conf文件夾下沒有schema.xml這個(gè)文件狮斗,只有managed-schema茂缚,如果把managed-schema刪掉,然后放schema.xml,那么運(yùn)行時(shí)候會(huì)根據(jù)schema.xml生成managed-schema延赌,如果這兩個(gè)文件同時(shí)存在耽梅,則會(huì)只根據(jù)managed-schema的內(nèi)容配置薛窥。
在沒有配置word分詞器之前,schema.xml里面默認(rèn)用的是WhitespaceTokenizerFactory眼姐,就是根據(jù)空格來分詞诅迷,對(duì)于中文來說則是將文本分為一個(gè)個(gè)單字,對(duì)一篇新聞分詞后的結(jié)果如下:
下面配置word分詞:
將schema.xml中的需要用到Word分詞的fieldType中的:
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
和
<tokenizer class="solr.StandardTokenizerFactory"/>
替換為:
<tokenizer class="org.apdplat.word.solr.ChineseWordTokenizerFactory"/>
并移除下面的filter標(biāo)簽.
如text_general類型:
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
<analyzer type="index">
<tokenizer class="org.apdplat.word.solr.ChineseWordTokenizerFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.apdplat.word.solr.ChineseWordTokenizerFactory"/>
</analyzer>
</fieldType>
將word-1.3.jar放到lib文件夾下众旗,重啟solr罢杉,可以看到分詞效果如下:
另外,在conf文件夾下面發(fā)現(xiàn)有很多txt文件:
這是用來設(shè)置停止詞逝钥,或者是同義詞的屑那。
例如在利用word分詞后,查詢“下跌”艘款,得到結(jié)果如下:
查詢“下降”是沒有結(jié)果的:
在synonyms.txt配置:
下降=>下跌
或者設(shè)置為:
下降,下跌
前者表示為將下降轉(zhuǎn)換為下跌,后者表示這些詞可以相互替換哗咆。
另外蜘欲,還要記得在相應(yīng)的fieldType加上對(duì)同義詞的支持:
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
<analyzer type="index">
<tokenizer class="org.apdplat.word.solr.ChineseWordTokenizerFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.apdplat.word.solr.ChineseWordTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
</analyzer>
重啟solr之后再查詢“下降”:
通過上面的例子可以看出晌柬,通過配置conf文件夾下面的文件姥份,可以對(duì)solr進(jìn)行很多個(gè)性化的設(shè)置,solr的功能還是很強(qiáng)大的年碘。
word分詞器:https://github.com/ysc/word