最近在折腾solr,现在需要让其支持中文分词,在网上看到了很多关于使用paoding中文分词的文章,但是测试很久都不行,而且paoding这个分词工具很久没更新了,最新版本是paoding-analysis-2.0.4-beta.zip,于是在想有没有其它的分词工具可以使用,后来找到了IKAnalyzer,仔细看了下,感觉很不错,关键是配置很容易,参照一篇文章中的例子http://blog.sina.com.cn/s/blog_722364920100v80u.html(在这里非常感谢这位楼主的文章),就跑起来了。在这里特意把其中关键的部分记载下来。
1、下载IKAnalyzer,并将其放置到solr/WEB-INF/lib目录下
IKAnalyzer 下载地址:http://code.google.com/p/ik-analyzer/downloads/detail?name=IKAnalyzer3.2.8%20bin.zip&can=2&q=
2、修改solr中conf目录中的schema.xml配置文件,添加如下内容:
<!-- IKAnalyzer3.2.8 中文分词--> <fieldType name="text" class="solr.TextField"> <analyzer type="index"> <tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="false"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> <analyzer type="query"> <tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="true"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> </fieldType>
如果采用上面的这种方式,那么相当于我们重新定义了一种fieldType,在后面的fields中需要把那些text_general修改为text,为了避免这种麻烦,我们可以修改原有的text_general类型:
找到fieldType name="text_general" ,修改其中的<tokenizer class="solr.StandardTokenizerFactory"/>为
<tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="true"/>
这样就不需要修改后面的配置了。
3、测试
在浏览器中打开http://127.0.0.1:8080/solr/admin/analysis.jsp
在Field中选择type,在后面的输入框中输入text
在Field Value(Index)中输入:solr 中使用IKAnalyzer 中文分词
在Filed Value(Query)中输入:中文分词
最后点击Analyze,就会看到测试结果: