`
banditjava
  • 浏览: 159873 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

完成了paoding与lucene的集成

阅读更多
---------------------------------------------------20080729---------------------------------------------------
理解疱丁分词的基本原理,编译原码,用ANT编译
E:\workspace\searchengine\paoding-analysis-2.0.4-beta


完成了中文分词的solr集成工作,集成到solr中去,
  注意:
  1)需要将solr的tomcat的connector改成可接受utf8
  <Connector port="8080" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8"/>
  2)需要将php的格式换成utf-8,在头上加 header("Content-Type: text/html; charset=UTF-8");   
  3)修改schema.xml
  <fieldType name="text" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
  <!-- tokenizer class="solr.WhitespaceTokenizerFactory"/-->
        <!-- 加入中文分词 -->
        <tokenizer class="solr.ChineseTokenizerFactory" mode="most-words" />
        .....
  4)加入paoding时,需要在环境变量加PAODING_DIC_HOME 指定到/dic目录
  5)写一个类,org.apache.solr.analysis.ChineseTokenizerFactory包装疱丁分词,详见附录一

-------------------20080730---------
完成lucene与paoding的集成工作

E:\workspace\searchengine\indexdata>java org.apache.lucene.demo.IndexFiles %HERITRIX_HOME%\jobs\default3-20080730031933671\mirror\news.21315.com
 
  info = config paoding analysis from: E:\workspace\searchengine\luncene\test\lucene-2.3.2\bin\paoding-analysis.properties;E:\workspace\searchengine\luncene\test\lucene-2.3.2\file:\E:\workspace\searchengine\paoding-analysis-2.0.4-beta\paoding-analysis.jar!\paoding-analysis-default.properties;E:\workspace\searchengine\luncene\test\lucene-2.3.2\file:\E:\workspace\searchengine\paoding-analysis-2.0.4-beta\paoding-analysis.jar!\paoding-analyzer.properties;E:\workspace\searchengine\luncene\test\lucene-2.3.2\file:\E:\workspace\searchengine\paoding-analysis-2.0.4-beta\paoding-analysis.jar!\paoding-dic-home.properties;E:\workspace\searchengine\paoding-analysis-2.0.4-beta\dic\paoding-dic-names.properties;E:\workspace\searchengine\luncene\test\lucene-2.3.2\file:\E:\workspace\searchengine\paoding-analysis-2.0.4-beta\paoding-analysis.jar!\paoding-knives.properties;E:\workspace\searchengine\luncene\test\lucene-2.3.2\file:\E:\workspace\searchengine\paoding-analysis-2.0.4-beta\paoding-analysis.jar!\paoding-knives-user.properties
info = add knike: net.paoding.analysis.knife.CJKKnife
info = add knike: net.paoding.analysis.knife.LetterKnife
info = add knike: net.paoding.analysis.knife.NumberKnife
info = add knike: net.paoding.analysis.knife.CJKKnife
info = add knike: net.paoding.analysis.knife.LetterKnife
info = add knike: net.paoding.analysis.knife.NumberKnife
info = loading dictionaries from E:\workspace\searchengine\paoding-analysis-2.0.4-beta\dic
info = loaded success!
Indexing to directory 'index'...
adding E:\workspace\searchengine\heritrix\heritrix-1.14.0\target\heritrix-1.14.0\bin\heritrix-1.14.0\jobs\default3-20080730031933671\mirror\news.21315.com\2008\application\x-shockwave-flash


对于疱丁分词的封装

package org.apache.solr.analysis;

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;

/**
* 对于疱丁分词的封装
* @author tufei
*
*/
public class ChineseTokenizerFactory extends BaseTokenizerFactory {
/**
* most words
*/
public static final String MOST_WORDS_MODE = "most-words";
/**
* max word length
*/
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("Irregular Mode args setting:"
+ mode);
}
}

@Override
public void init(Map<String, String> 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");
}
}

 
分享到:
评论
1 楼 lelecheng 2009-02-18  
我按照ronghao的文章测试了一下。
运行的时候老报这个错误:

2009-2-18 18:45:06 org.apache.solr.common.SolrException log
严重: java.lang.ClassCastException: com.*.se.analyzer.ChineseTokenizerFactory cannot be cast to org.apache.solr.analysis.TokenizerFactory


能帮我看看为什么不?

相关推荐

    paoding+lucene实现全文检索功能简单实例

    在实现这个简单实例的过程中,首先需要集成Paoding和Lucene到你的项目中。安装完成后,你需要创建一个索引器,使用Paoding对输入的文本进行分词,然后用Lucene的API将这些词构建为索引。索引过程通常包括打开读写器...

    lucene3.0学习笔记(三)与paoding整合

    这篇学习笔记主要关注的是将Lucene 3.0与Paoding搜索引擎进行集成的实践与技术要点。 首先,Lucene是一个高性能、全文检索库,提供了完整的搜索功能,包括索引、查询、排序等。版本3.0是其发展过程中的一个重要里程...

    与lucene3.0兼容的庖丁jar包

    在使用lucene3与paoding集成的时候可能会出现以下错误: Exception in thread "main" java.lang.AbstractMethodError: org.apache.lucene.analysis.TokenStream.incrementToken()Z at org.apache.lucene.index....

    lucene Demo(paoding)

    3. **分词处理**:理解分词在全文检索中的重要性,以及如何集成Paoding分词器,利用其强大的中文分词功能。 4. **Analyzer使用**:学习如何自定义Analyzer,特别是配置PaodingAnalyzer,以适应中文的特殊性,如词语...

    Lucene建立索引jar包和Paoding分词jar包

    《Lucene与Paoding分词在索引构建中的应用》 Lucene,作为一款开源的全文检索库,被广泛应用于各种信息检索系统中,而Paoding分词则是针对中文进行高效精准分词的工具,两者结合能显著提升中文文本检索的效率和准确...

    适合lucene3.0用的paoding-analysis的jar包

    《深入理解Lucene3.0与Paoding-Analysis集成应用》 在信息检索领域,Apache Lucene是一款强大的全文搜索引擎库,被广泛应用于各种信息检索系统。Lucene3.0是其历史版本之一,具备高效、灵活的特点。在这个版本中,...

    paoding_analysis.rar_PaodingAnalysis_lucene paoding_paodi

    在PaodingAnalysis与Lucene的集成过程中,开发者首先需要引入PaodingAnalysis的相关依赖,然后在配置Lucene的Analyzer时选择PaodingAnalyzer。这样,当索引或搜索中文文本时,Paoding分词器就会自动对文本进行分词...

    lucene-4.8.1 + paoding-analysis-master

    在Lucene 4.8.1中集成Paoding Analysis,首先需要将对应的jar包添加到项目依赖中。这通常可以通过Maven或Gradle来管理,确保Lucene库和Paoding Analysis库的正确引用。在完成库的引入后,我们需要配置Analyzer,指定...

    庖丁解牛 源码 for Lucene 2.4

    5. **易用性**:Paoding Lucene提供了简洁的API接口,使得开发者可以轻松集成到自己的项目中,降低了使用门槛。 通过对Paoding Lucene的源码学习,开发者可以了解到如何在Lucene的基础上定制适合中文环境的搜索引擎...

    paoding 分词

    paoding可方便地与Lucene、Solr等全文检索引擎集成,提供高性能的中文分词服务。 总结来说,paoding分词是一个强大的中文分词工具,其高效、灵活的特性使得它在众多分词库中脱颖而出。通过理解其工作原理和熟练...

    Paoding中文分词

    4. “lucene”:这是一个开源全文检索库,表明“Paoding中文分词”可能与Lucene有集成或兼容性,可以用于提高搜索和索引效率。 **压缩包子文件的文件名称列表解析** 1. `analyzer.bat` 和 `analyzer.sh`:这两个...

    lucene.jar架包

    1. **compass-2.1.0.jar**:Compass 是基于 Lucene 的一个高级搜索引擎框架,提供了与 ORM 框架(如 Hibernate)的集成,使得数据库中的数据可以被全文搜索。 2. **lucene-core.jar**:Lucene 的核心库,包含所有...

    lucene简单教程poading中文分词.pdf

    通过上述步骤和代码片段的解析,我们了解了如何在实际应用中利用 Lucene 和 Paoding 来处理中文分词和搜索,以及它们与数据库之间的集成方法。这为开发一个完整的中文全文搜索系统提供了重要的参考。

    lucene3庖丁解牛中文分词器

    《深入剖析:Lucene3与庖丁解牛中文分词器》 在信息技术飞速发展的今天,全文检索和搜索引擎已经成为日常开发中不可或缺的部分。Lucene作为一款强大的全文检索库,被广泛应用于各种信息检索系统中。然而,对于中文...

    paoding-analysis3.0.jar

    在 "paoding-analysis3.0_for_lucene-core-3.3" 这个压缩包中,包含了 Paoding 分词器的特定版本,确保与 Lucene 3.3.0 版本兼容。 Paoding Analysis 的特点主要包括: 1. **高性能**:采用了高效的分词算法,使得...

    paoding-analysis-2.0.4-alpha2.rar_2.0.4-alpha2_paoding-analysis-

    PaoDing Analysis是一个针对这一问题的专业解决方案,它对Lucene进行了深度封装,为用户提供了一套强大的中文分词工具。在本文中,我们将详细探讨PaoDing Analysis 2.0.4-alpha2的主要特性和使用方法。 首先,让...

    基于Lucene的中文分词器代码paoding,IK,imdict,mmseg4j

    这些分词器在Lucene框架下工作,能够无缝集成到全文检索和信息提取的系统中。通过对比测试,可以观察不同分词器在处理同一段落时的分词效果和执行效率,从而选择最适合项目需求的分词工具。对于开发者来说,理解这些...

    Lucene 庖丁解牛分词法2.4版本jar包

    5. **扩展性强**:支持多种Lucene版本,易于与其他系统集成。 具体使用"paoding-analysis-2.0.4-alpha2"时,开发者需要将其引入项目,然后在Lucene的索引创建和查询过程中,指定使用这个分词器。通过设置Analyzer,...

    最新庖丁分词源代码(for lucene3.0)

    庖丁分词是一款知名的中文分词工具,专为...总之,这个压缩包提供了一个深入了解中文分词技术,特别是如何与Lucene集成的宝贵资源。无论是为了学习还是实际项目开发,深入研究庖丁分词的源代码都将带来丰富的收获。

Global site tag (gtag.js) - Google Analytics