solr(3)整合paoding

1. 下载paoding-analysis-2.0.4-beta.zip

http://code.google.com/p/paoding/downloads/list

2. 解压压缩包至paoding-analysis-2.0.4-beta

3. 设置paodinghome环境变量:

l paoding-analysis-2.0.4-beta中的dic文件夹考到solrhome文件夹中

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/dicD:/solr/solrsolrhome目录)

l 重新编译打包成paoding-analysis.jar

4. 封装paoding

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(附件中可下载),考到tomcat/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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值