1. 下载 paoding-analysis-2.0.4-beta.zip
http://code.google.com/p/paoding/downloads/list
2. 解压压缩包至 paoding-analysis-2.0.4-beta
3. 设置 paoding 的 home 环境变量:
l 把 paoding-analysis-2.0.4-beta 中的 dic 文件夹考到 solr 的 home 文件夹中
l 进入 paoding-analysis-2.0.4-beta 找到 paoding-analysis.jar ,将其考到 tomcat/webapps/solr/solr/WEB-INF/lib 下
l 解压 paoding-analysis.jar ,找到文件 paoding-dic-home.properties ,更改属性如下:
paoding.dic.home=D:/solr/solr/dic ( D:/solr/solr 为 solr 的 home 目录)
l 重新编译打包成 paoding-analysis.jar
package org.paoding;
import java.io.Reader;
import java.util.Map;
import net.paoding.analysis.analyzer.PaodingTokenizer;
import net.paoding.analysis.analyzer.TokenCollector;
import net.paoding.analysis.analyzer.impl.MaxWordLengthTokenCollector;
import net.paoding.analysis.analyzer.impl.MostWordsTokenCollector;
import net.paoding.analysis.knife.PaodingMaker;
import org.apache.lucene.analysis.TokenStream;
import org.apache.solr.analysis.BaseTokenizerFactory;
/**
* 中文切词 对庖丁切词的封装
*/
public class ChineseTokenizerFactory extends BaseTokenizerFactory {
/**
* 最多切分 默认模式
*/
public static final String MOST_WORDS_MODE = "most-words" ;
/**
* 按最大切分
*/
public static final String MAX_WORD_LENGTH_MODE = "max-word-length" ;
private String mode = null ;
public void setMode(String mode) {
if (mode== null || MOST_WORDS_MODE .equalsIgnoreCase(mode)
|| "default" .equalsIgnoreCase(mode)) {
this . mode = MOST_WORDS_MODE ;
} else if ( MAX_WORD_LENGTH_MODE .equalsIgnoreCase(mode)) {
this . mode = MAX_WORD_LENGTH_MODE ;
}
else {
throw new IllegalArgumentException( " 不合法的分析器 Mode 参数设置 :" + mode);
}
}
@Override
public void init(Map args) {
super .init(args);
setMode( (String) args.get( "mode" ));
}
public TokenStream create(Reader input) {
return new PaodingTokenizer(input, PaodingMaker.make (),
createTokenCollector());
}
private TokenCollector createTokenCollector() {
if ( MOST_WORDS_MODE .equals( mode ))
return new MostWordsTokenCollector();
if ( MAX_WORD_LENGTH_MODE .equals( mode ))
return new MaxWordLengthTokenCollector();
throw new Error( "never happened" );
}
}
注:其中需要的包为 solr.war 中的 lib 库和庖丁文件包中的 paoding-analysis.jar
将以上代码打包为 paoding.jar(附件中可下载), 考到t omcat/webapps/solr/solr/WEB-INF/lib 下。
5. 找到 solr 的 home 目录下的 conf (即 D:"solr"solr"conf )中的 schema.xml, 做如下修改:
<fieldType name ="text" class ="solr.TextField" positionIncrementGap ="100" >
<analyzer type ="index" >
<!--<tokenizer class="solr.WhitespaceTokenizerFactory"/>-->
<tokenizer class =" org.paoding.ChineseTokenizerFactory " mode ="most-words" />
··· ···
</analyzer>
<analyzer type ="query" >
<!--<tokenizer class="solr.WhitespaceTokenizerFactory"/>-->
<tokenizer class =" org.paoding.ChineseTokenizerFactory " mode ="most-words" />
··· ···
</analyzer>
</fieldType>
其中 <!-- --> 里面的为原来默认的内容
6. 重启 tomcat 即可。进行测试 http://localhost:8888/solr/admin/analysis.jsp