`

solr使用中文,庖丁分词

阅读更多

1、分析器改造 net.paoding.analysis.analyzer.PaodingTokenizer.java

 

extends Tokenizer 原来是 extends TokenStream

 

2、net.paoding.analysis.analyzer.solr.ChineseTokenizerFactory.java

 

package net.paoding.analysis.analyzer.solr;

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.lucene.analysis.Tokenizer;

import org.apache.solr.analysis.BaseTokenizerFactory;

 

/**

* Created by IntelliJ IDEA. User: ronghao Date: 2007-11-3 Time: 14:40:59 中文切词

* 对庖丁切词的封装

*/

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"));

}

 

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");

}

}

 

3、下载庖丁 将paoding-analysis.jar改造成paoding-analysis-solr.jar(将1,2覆盖进去这个包)

 

4、定义庖丁词典 paoding-dic-home.properties

 

paoding.dic.home=D:/WORK/DOCSET/solr/paoding-analysis-2.0.4-beta/dic/

 

5、替换原有的分词类 D:\WORK\DOCSET\solr\j-solr1\solr\conf\schema.xml

 

<fieldtype name="text" class="solr.TextField" positionIncrementGap="100">        

        <analyzer type="index">          

         <tokenizer class="net.paoding.analysis.analyzer.solr.ChineseTokenizerFactory" mode="most-words"/>          

         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>       

         <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0"/>          

         <filter class="solr.LowerCaseFilterFactory"/>           

         <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>         

        </analyzer>    

        <analyzer type="query">         

         <tokenizer class="net.paoding.analysis.analyzer.solr.ChineseTokenizerFactory" mode="most-words"/>            

         <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>         

         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>      

         <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/>         

         <filter class="solr.LowerCaseFilterFactory"/>          

         <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>     

        </analyzer> 

</fieldtype>

分享到:
评论

相关推荐

    sorlr + tomcat+ 庖丁解牛中文分词 配置文档

    总结来说,这个配置文档应该包含了如何在Tomcat上部署Solr,以及如何配置Solr以使用庖丁解牛分词器进行中文处理的详细步骤。这对于需要处理大量中文数据的搜索应用开发者来说,是一份非常实用的参考资料。通过阅读...

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

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

    Solr中文教程技术文档.docx

    - 为了支持中文搜索,推荐使用庖丁分词器。在 `schema.xml` 中定义字段类型: - 对于中文词组分词,可以配置 `fieldtype` 为 `text` 类型,并设置 `tokenizer` 为 `...

    中文搜索分词lucene包+paoding包

    Lucene和Paoding是两个广泛使用的开源工具,它们专门用于实现高效、准确的中文分词。 Lucene是一个强大的全文检索库,由Apache软件基金会开发。它提供了索引和搜索文本的能力,使得开发者能够快速构建自己的搜索...

    solr+paoding

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

    solr培训.ppt

    - **分词**:将文档内容分割成单独的词汇单位,英文可以利用空格自然分词,中文则需要特殊处理,如庖丁分词、ik-analyzer等。 - **停用词过滤**:去除没有实际意义的词汇,如英文中的"the"、"and",中文中的"的"、...

    solr全文检索

    例如,可以使用qieqie庖丁分词工具。在Solr中创建一个自定义的`TokenizerFactory`,继承自Solr的`BaseTokenizerFactory`,并集成qieqie的分词算法,以支持最多切分和按最大切分模式。 ```java public class ...

    paoding 分词

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

    Solr培训文档

    开源搜索引擎Solr学习 搜索引擎发展大事记 搜索引擎分类--目录式搜索引擎 搜索引擎分类--索引式搜索引擎 搜索引擎分类--元搜索引擎 开源搜索引擎Lucene家族 搜索引擎的三大核心 中文分词 ...庖丁解牛分词器

    paoding-analysis-4.4.0.jar

    paoding-analysis-4.4.0.jar 庖丁分词jar,支持lucene4.4.0及solr4.4.0版本。

Global site tag (gtag.js) - Google Analytics