solr自定义分词器
目的:在对英文句子分词的时候,一般采用采用的分词器是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