利用SOLR搭建企业搜索平台 之十一(中文分词之IK)

在经过使用了庖丁以后,这里说说怎么将目前很火很流行的IK集成进SOLR,其实方法真的很简单,比paoding方便不少。这里很感谢IK的作者,蓝山咖啡,很感谢你为中文分词做出的贡献。 作者博客:http://linliangyi2007.javaeye.com

入正题:
1》请先去作者博客参看IK下载地址,主要就是一个IKAnalyzer3.1.1Stable.jar。我这里用的是最新版!

Java代码
  1. package com.yeedoo.slor.tokenizer;  
  2.   
  3. import java.io.Reader;  
  4.   
  5. import org.apache.lucene.analysis.TokenStream;  
  6. import org.apache.solr.analysis.BaseTokenizerFactory;  
  7. import org.wltea.analyzer.lucene.IKAnalyzer;  
  8.   
  9. public class ChineseTokenizerFactory extends BaseTokenizerFactory {  
  10.   
  11.     @Override  
  12.     public TokenStream create(Reader reader) {  
  13.         return new IKAnalyzer().tokenStream("text", reader);  
  14.     }  
  15.       
  16. }  


从代码就可以看得出来真的很方便!将它打包放入solr.war中同时还有IK的jar包。如果你不想打包,请去附件下载已经打好的包。

2》配置文件
Xml代码
  1. <fieldType name="text" class="solr.TextField" positionIncrementGap="100">  
  2.             <analyzer type="index">  
  3.                 <tokenizer class="com.yeedoo.slor.tokenizer.ChineseTokenizerFactory" />  
  4.                 <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />  
  5.                 <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" />  
  6.                 <filter class="solr.LowerCaseFilterFactory" />  
  7.                 <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt" />  
  8.                 <filter class="solr.RemoveDuplicatesTokenFilterFactory" />  
  9.             </analyzer>  
  10.             <analyzer type="query">  
  11.                 <tokenizer class="com.yeedoo.slor.tokenizer.ChineseTokenizerFactory" />  
  12.                 <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />  
  13.                 <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />  
  14.                 <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1" />  
  15.                 <filter class="solr.LowerCaseFilterFactory" />  
  16.                 <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt" />  
  17.                 <filter class="solr.RemoveDuplicatesTokenFilterFactory" />  
  18.             </analyzer>  
  19.         </fieldType>  

关于这里的配置文件,如果你更详细的了解意思,请参见我的另一篇博客,博客地址:http://lianj-lee.javaeye.com/blog/424474

3》如果在启动tomcat没有报错的情况下,可以去solr的admin那里尝试看看该分词器的效果,效果如下图:

这样就ok了。简单、方便、“无公害”... ...
posted @ 2009-09-16 11:56  searchDM  阅读(1278)  评论(0编辑  收藏  举报