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

solr整合paoding分词注意的一些细节

阅读更多
今天花了一个下午一个晚上,参考了网上许多资料,终于把paoding分词整合到solr中了,为了避免以后忘记,特此记录。
1.首先写一个类,这个类在网上都有,记录如下:
package com.test.slor.tokenizer;  
 
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<String,String> args) {  
        super.init(args);  
        setMode(args.get("mode").toString());  
    }  
 
    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");  
    }  
      

然后把这个类编译成.class文件,如果想打包,也可以直接打包成.jar文件。
2.修改solr的schema.xml文件,也记录如下:
<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
      <analyzer type="index"> 
        <!--<tokenizer class="solr.WhitespaceTokenizerFactory"/>--> 
        <tokenizer class="com.test.slor.tokenizer.ChineseTokenizerFactory" mode="most-words"/> 
      ...
      </analyzer> 
      <analyzer type="query"> 
         <!--<tokenizer class="solr.WhitespaceTokenizerFactory"/>--> 
         <tokenizer     class="com.test.slor.tokenizer.ChineseTokenizerFactory" mode="most-words"/>   
        ...
      </analyzer> 
</fieldType> 
3.把第1步编译好的.class文件或者.jar和paoding-analysis.jar 放到容器下,比如tomcat,那即是放到tomcat\webapps\solr\WEB-INF\lib\下 ,注意,是solr的WEB-INF\lib\,而不是你手头的某个工程的WEB-INF\lib\下,由于我粗心大意,直接在myeclipse中把两个.jar包粘贴到手头工程的WEB-INF\lib\下,结果报异常:
org.apache.solr.common.SolrException: Unknown fieldtype 'text' specified on field title......
然后一个下午过去了...

当我发现这个问题,并把两个.jar放到正确的位置(如果是.class文件,则放在solr\WEB-INF\classes,其中要自己建classes文件夹),启动tomcat,却报如下异常:
严重: org.apache.solr.common.SolrException: Error loading class 'com.test.solr.tokenizer.ChineseTokenizerFactory'...
严重: org.apache.solr.common.SolrException: analyzer without class or tokenizer & filter list...
我使用的paoding是paoding-analysis-2.0.4-beta.zip,其中lib文件夹包含的lucene是lucene-core-2.2.0.jar,而我用的solr是apache-solr-1.3.0,其中tomcat\webapps\solr\WEB-INF\lib\包含的lucene是lucene-core-2.4-dev.jar。而在第一步,import org.apache.lucene.analysis.TokenStream;  时,我用的是lucene-core-2.2.0.jar,结果编译出来的.class(或.jar)文件,运行时就报异常了。当我改用lucene-core-2.4-dev.jar时,则成功在solr中加入paoding分词了。
嗯,晚上就是这样过去的...
分享到:
评论

相关推荐

    Solr3.2 + Paoding中文分词的搜索引擎

    Solr3.2 + Paoding中文分词的搜索引擎是一个针对中文文档进行高效检索的解决方案,结合了Apache Solr 3.2版本与Paoding分词器的优势。Apache Solr是基于Lucene的开源搜索服务器,提供了更高级别的API和配置选项,而...

    paoding 分词

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

    solr 和paoding整合

    NULL 博文链接:https://qiaopang.iteye.com/blog/451897

    solr+paoding

    为了利用 Solr 的强大搜索功能并结合 Paoding 的中文分词能力,可以按照以下步骤操作: 1. **配置 Paoding 分词器**: - 在 Solr 的配置文件中添加 Paoding 分词器的相关设置。 - 确保 Paoding 分词库已正确加载到...

    兼容solr4.10.2的ik-mmseg4j-paoding分词器

    能兼容solr-4.10.2的分词器,大礼包全放送.包括IK分词器,mmseg4j分词器,庖丁分词器.都是经本人测试可用,其中mmseg4j与庖丁都是下载源码,修改重编译并测试生成的....至于与solr的整合方式,网上很多,这里就不介绍了.

    Solr IK分词器

    solr 中文查询分词器,把一串字符分作多个词语进行查询

    solr 5.x 和 6.x 最新中文分词器

    Solr支持多种中文分词器,如IK Analyzer、Smart Chinese Analyzer、Paoding Analyzer等,它们各自有不同的特性和适用场景。 1. IK Analyzer:是一款开源的Java语言实现的中文分词工具,支持词典动态更新,对新词...

    solr导入 IK分词

    IK分词器(Intelligent Chinese Analyzer for Solr)是为Solr设计的一款高性能的中文分词组件,尤其适用于海量数据的分词处理。在本主题中,我们将深入探讨如何在Solr中导入并使用IK分词器。 一、IK分词器介绍 IK...

    solr ik中文分词

    **Solr与IK中文分词器** Solr是一款开源的企业级全文搜索引擎,它提供了一个高效、灵活、可扩展的搜索平台。在处理中文文本时,由于中文的特殊性(词与词之间没有明显的分隔符),需要使用专门的分词器进行预处理,...

    支持solr5.5 solr6.0中IK分词需要的资料

    Solr是中国最流行的全文...通过以上步骤和注意事项,你应该能够成功地在Solr 5.5和6.0中集成和使用IK分词器,从而提升中文文本的检索效果。所提供的资料将有助于这个过程,帮助你解决可能出现的问题和优化分词性能。

    Solr5.4中文分词

    6. **测试验证**:创建一个索引,添加一些中文文档,然后进行查询,查看分词效果是否符合预期。 通过以上步骤,我们就能在Solr 5.4中成功配置并使用中文分词库。这个过程对于提升中文文档的检索效率和准确性至关...

    solr7.3.1中文分词器

    标题中的"solr7.3.1中文分词器"指的就是为Solr 7.3.1版本特别优化的中文分词解决方案。 描述中提到的"solr7.3.1种需要的中文IK分词器",IK(Intelligent Chinese Analyzer)分词器是一个强大的、成熟的中文分词组件...

    支持lucene4.0的paoding分词

    支持lucene4.0的paoding分词

    Solr-ik分词

    而智能模式则会根据上下文判断,进行更复杂的分词,如识别出一些具有特定含义的短语。 在Solr中配置Ik分词器,通常需要以下几个步骤: 1. 下载ikanalyzer-solr5版本的分词器库,并将其添加到Solr的lib目录下,确保...

    solr ik分词器

    Solr是中国最流行的开源搜索引擎平台之一,而IK Analyzer是一款针对中文的高性能分词器,尤其在处理现代汉语的复杂情况时表现出色。本教程将详细解释如何在Solr中安装和使用IK分词器。 首先,让我们理解一下什么是...

    solr(中文分词器)集群

    IK分词器(Intelligent Chinese Analyzer for Solr)是针对Solr优化的中文分词工具,它支持多种分词模式,包括精确模式、全模式、关键词模式等,以满足不同场景的需求。在Solr的`schema.xml`配置文件中,你可以指定...

    IK分词solr5.0.0

    当我们谈论"IK分词solr5.0.0"时,我们关注的是如何在Solr 5.0.0版本中集成和使用IK分词器。 首先,IK分词器全称为“Intelligent Chinese Analyzer for Solr”,由北京大学的开源社区开发,旨在提供对中文文本更精确...

    solr 7.2.1IK分词jar包

    "ikanalyzer-solr5"这个文件可能是一个针对Solr 5.x版本的IK分词器的jar包,虽然标题提到的是Solr 7.2.1,但实际使用时,我们应当确保使用与Solr版本兼容的IK分词器。对于Solr 7.2.1,可能需要找到对应的ikanalyzer-...

    solr配置IK分词器Jar包和配置文件

    标题中的“solr配置IK分词器Jar包和配置文件”意味着我们需要将IK分词器的相关库文件(Jar包)添加到Solr的类路径中,并且对Solr的配置文件进行适当的修改,以便Solr知道如何使用这个分词器。 首先,你需要下载IK...

    solr6.0中文分词

    Solr 6.0 中文分词是针对中文文本处理的重要功能,它是搜索引擎优化的关键环节。Solr 是一个流行的开源全文检索服务器,由 Apache 软件基金会开发,用于提供高效、可扩展的搜索和分析服务。在处理中文文档时,由于...

Global site tag (gtag.js) - Google Analytics