solr版本3.4.0
paoding版本(Revision154), 下载源代码http://paoding.googlecode.com/svn/trunk/, 到paoding-analysis目录执行build.bat, 生成paoding-analysis.jar
package com.sh2600.test.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.Tokenizer;
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(args.get("mode").toString());
}
public Tokenizer 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");
}
}
以上代码打包为paoding4solr.jar, 和paoding-analysis.jar放到$solr.home/lib下
复制词典(dic目录)到/opt/paoding/dic
复制paoding-*.properties到classpath(例如tomcat/lib下, 放到$solr.home/lib似乎不行)
修改paoding-dic-home.properties中的paoding.dic.home=/opt/paoding/dic
修改$solr.home/conf/schema.xml
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<!--<tokenizer class="solr.WhitespaceTokenizerFactory"/>-->
<tokenizer class="com.sh2600.test.paoding.ChineseTokenizerFactory" mode="most-words"/>
......
</analyzer>
<analyzer type="query">
<!--<tokenizer class="solr.WhitespaceTokenizerFactory"/>-->
<tokenizer class="com.sh2600.test.paoding.ChineseTokenizerFactory" mode="most-words"/>
......
</analyzer>
</fieldType>
重启solr
执行数据导入,查询
参考
http://tech.ddvip.com/2009-09/1252589447132071.html
http://www.iteye.com/topic/364513
分享到:
相关推荐
- 对于中文搜索的支持,推荐使用庖丁分词器。在`schema.xml`中添加以下字段类型定义: ```xml <fieldType name="text" class="solr.TextField" positionIncrementGap="100"> ``` - 同时可以定义...
标题 "sorlr + tomcat+ 庖丁解牛中文分词 配置文档" 提到的是一个关于在Apache Solr中集成Tomcat服务器,并利用庖丁解牛中文分词工具进行中文处理的配置教程。这个配置过程对于搭建支持中文搜索的Solr环境至关重要。...
在 Solr 中使用时,需要引入相关类库,并在 `schema.xml` 中配置分词器。例如: ```xml ``` 这里 `mode="most-words"` 表示使用最大切词模式。 总之,Solr 是一个强大的全文搜索引擎,通过与 Lucene...
- Solr被广泛应用于各种大型网站和应用程序中,以满足大规模数据的检索需求。 #### 二、Lucene的工作原理 - **文档处理流程**: - **分词**:将文档内容分割成单独的词汇单位,英文可以利用空格自然分词,中文则...
- **庖丁分词库**: 通常以“庖丁 jar”形式提供,可以直接集成到 Solr 中。 - **中文分词的重要性**: 对于中文等非拉丁字母语言,分词是全文检索的关键步骤。合理的分词能够显著提升搜索效果。 #### 五、Solr与...
例如,可以使用qieqie庖丁分词工具。在Solr中创建一个自定义的`TokenizerFactory`,继承自Solr的`BaseTokenizerFactory`,并集成qieqie的分词算法,以支持最多切分和按最大切分模式。 ```java public class ...
能兼容solr-4.10.2的分词器,大礼包全放送.包括IK分词器,mmseg4j分词器,庖丁分词器.都是经本人测试可用,其中mmseg4j与庖丁都是下载源码,修改重编译并测试生成的.希望大家喜欢.至于与solr的整合方式,网上很多,这里就不...
开源搜索引擎Solr学习 搜索引擎发展大事记 搜索引擎分类--目录式搜索引擎 搜索引擎分类--索引式搜索引擎 搜索引擎分类--元搜索引擎 开源搜索引擎Lucene家族 搜索引擎的三大核心 中文分词 ...庖丁解牛分词器
3. **查询处理**:当用户输入查询时,同样使用Paoding对查询字符串进行分词,然后在Lucene的索引中查找匹配的文档。 4. **结果返回**:根据匹配程度和相关性算法,Lucene会返回最相关的搜索结果。 在实际应用中,...
paoding-analysis-4.4.0.jar 庖丁分词jar,支持lucene4.4.0及solr4.4.0版本。
在Java领域中,paoding(又称“庖丁”)是一个高效、灵活的中文分词库,专为处理大规模中文文本而设计。本文将详细介绍paoding分词的环境搭建过程及其核心特性,旨在帮助读者深入理解和应用这一工具。 **一、...