Paoding 在 Solr 1.4 中使用

小编辑 发布于 2010/02/27 10:46
阅读 1K+
收藏 4

Solr 1.4 中的 TokenizerFactory 有变化。以至旧的 solr 分词扩展不能用。它的 create 方法要求返回 Tokenizer,而 PaodingTokenizer 不是继承 Tokenizer 的。所以不太方便。因此写个包装。

新写一个 SolrPaodingTokenizer 继承 Tokenizer,而 PaodingTokenizer 是其属性。如:

  1. package com.chenlb.solr.paoding;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.Reader;  
  5.   
  6. import net.paoding.analysis.analyzer.PaodingTokenizer;  
  7. import net.paoding.analysis.analyzer.TokenCollector;  
  8. import net.paoding.analysis.knife.Knife;  
  9.   
  10. import org.apache.lucene.analysis.Token;  
  11. import org.apache.lucene.analysis.Tokenizer;  
  12.   
  13. /** 
  14.  * Solr 1.4 中使用对 PaodingTkenizer 的包装。 
  15.  * 
  16.  * @author chenlb 2009-12-18 下午 04:46:06 
  17.  */  
  18. public class SolrPaodingTokenizer extends Tokenizer {  
  19.   
  20.     private PaodingTokenizer paodingTokenizer;  
  21.   
  22.     private Knife knife;  
  23.     private TokenCollector tokenCollector;  
  24.   
  25.     public SolrPaodingTokenizer(Reader input, Knife knife, TokenCollector tokenCollector) {  
  26.         paodingTokenizer = new PaodingTokenizer(input, knife, tokenCollector);  
  27.         this.input = input;  
  28.         this.knife = knife;  
  29.         this.tokenCollector = tokenCollector;  
  30.     }  
  31.   
  32.     public Token next() throws IOException {  
  33.         return paodingTokenizer.next();  
  34.     }  
  35.   
  36.     public void close() throws IOException {  
  37.         paodingTokenizer.close();  
  38.     }  
  39.   
  40.     public void reset(Reader input) throws IOException {  
  41.         paodingTokenizer = new PaodingTokenizer(input, knife, tokenCollector);  
  42.         this.input = input;  
  43.     }  
  44. }  

然后再写个 PaodingTokenizerFactory,我这就不写了,下载:solr-1.4-paoding.zip

包装 paoding 2.0.4-beta,以至可以在 solr 1.4 中使用。

使用:

把 apache-solr-1.4.0-paoding.war 替换 apache-solr-1.4.0.war,里面打包了 paoding-2.0.4-beta、词库、还在包装的 solr-1.4-paoding.jar

源码在 solr-1.4-paoding-src 中,solr-1.4-paoding.jar 是在 solr 1.3 下编译的。测试过,可以在 solr 1.4 中使用。

solr/conf 包括有 schema.xml 配置:

  1. <fieldType name="text" class="solr.TextField" positionIncrementGap="100">  
  2.     <analyzer>  
  3.         <tokenizer class="com.chenlb.solr.paoding.PaodingTokenizerFactory"/>  
  4.         <filter class="solr.LowerCaseFilterFactory"/>  
  5.     </analyzer>  
  6. </fieldType>  

如果只用 PaodingAnalyzer 不用包装也行的。如:

  1. <fieldType name="text" class="solr.TextField">  
  2.   <analyzer class="net.paoding.analysis.analyzer.PaodingAnalyzer"></analyzer>  
  3. </fieldType>  

 

加载中
0
谢启明
谢启明

妈呀,你太好了。。。

谢谢你啊。。。

返回顶部
顶部