solr自定义分词器

目的:在对英文句子分词的时候,一般采用采用的分词器是WhiteSpaceTokenizerFactory,有一次因业务要求,需要根据某一个特殊字符(以逗号分词,以竖线分词)分词。如图1,我输入

"中华,人民,*",如果用ik分词器,会分成如图1的效果,用自定义按逗号分割的分词器,会分成如图2的效果。

solr自定义分词器

 图(1)

 solr自定义分词器

 图(2)

1.加入jar包

<dependency> 

 <groupId>org.apache.solr</groupId> 

 <artifactId>solr-core</artifactId> 

 <version>6.0.0</version> 

 </dependency>

2.参照WhitespaceTokenizerFactory的源码,写一个自己的MyVerticalLineTokenizerFactory如图3,内容基本不变:

solr自定义分词器

                                                                                     图(3)

3.写一个MyVerticalLineTokenizer.java类如图4,实现用逗号分词

solr自定义分词器

 图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

solr自定义分词器

 图(5)

重启tomcat,按照comma_text类型进行分词,就会出现如图2的效果。

参照:http://blog.csdn.net/jiangchao858/article/details/68954044