目的:在對英文句子分詞的時候,一般採用採用的分詞器是WhiteSpaceTokenizerFactory,有一次因業務要求,需要根據某一個特殊字符(以逗號分詞,以豎線分詞)分詞。如圖1,我輸入的詞,如果用ik分詞器,會分成如圖1的效果,用自定義按逗號分割的分詞器,會分成如圖2的效果。
圖(1)
圖(2)
1.加入jar包
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-core</artifactId>
<version>6.0.0</version>
</dependency>
2.參照WhitespaceTokenizerFactory
的源碼,寫一個自己的MyVerticalLineTokenizerFactory如圖3
,內容基本不變:
圖(3)
3.寫一個MyVerticalLineTokenizer.java類如圖4,實現用逗號分詞
圖4
這裏最主要的方法就是isTokenChar
,它控制了分詞的字符
4.需要把剛纔的java文件打成jar包,Eclipse,直接選中兩個類文件,右鍵 -> Export -> JAR File -> Select the export destination: ->選擇輸出路徑,填一個jar名字:MyVerticalLineTokenizerFactory -> Finish,
得到的MyVerticalLineTokenizerFactory.jar文件大約3KB,將改文件放置到tomcat7/webapps/solr/WEB-INF/lib下,在shcema.xml
中定義自己的field如圖5
圖(5)
重啓tomcat,按照comma_text類型進行分詞,就會出現如圖2的效果。
參照:http://blog.csdn.net/jiangchao858/article/details/68954044