设为首页收藏本站
开启辅助访问
切换到宽版

创星网络[分享知识 传递快乐]

 找回密码
 立即注册

QQ登录

只需一步,快速开始

用新浪微博登录

只需一步,快速搞定

搜索
查看: 3706|回复: 0
打印 上一主题 下一主题

solr+庖丁中文分词(paoding)实例解析

[复制链接]

我玩的应用:

跳转到指定楼层
楼主
发表于 2012-12-12 00:36:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
paoding分词器,最新的JAR文件为paoding-analysis-2.0.4-beta,不支持lucene3.0以上版本,作者提供了支持lucene3.0以上版本的源码,但没有打成JAR包发布。附件里有编译好的源码,支持lucene3.0以上版本,同时还添加了一个类,该类的作用是让庖丁分词器支持solr。

添加的类文件如下:
  1. package net.paoding.analysis.analyzer.solr;

  2. import java.io.Reader;
  3. import java.util.Map;

  4. import net.paoding.analysis.analyzer.PaodingTokenizer;
  5. import net.paoding.analysis.analyzer.TokenCollector;
  6. import net.paoding.analysis.analyzer.impl.MaxWordLengthTokenCollector;
  7. import net.paoding.analysis.analyzer.impl.MostWordsTokenCollector;
  8. import net.paoding.analysis.knife.PaodingMaker;

  9. import org.apache.lucene.analysis.Tokenizer;
  10. import org.apache.solr.analysis.BaseTokenizerFactory;

  11. /**
  12. * 实现Solr3.2分词器接口
  13. * 基于PaodingTokenizer的实现
  14. *
  15. * @author sunlightcs
  16. *
  17. * http://hi.juziku.com/sunlightcs/
  18. *
  19. */
  20. public class ChineseTokenizerFactory extends BaseTokenizerFactory{
  21.         /**
  22.      * 最多切分
  23.      */  
  24.     public static final String MOST_WORDS_MODE = "most-words";  
  25.   
  26.     /**
  27.      * 按最大切分
  28.      */  
  29.     public static final String MAX_WORD_LENGTH_MODE = "max-word-length";  
  30.   
  31.     private String mode = null;  
  32.    
  33.     private TokenCollector tokenCollector = null;
  34.   
  35.    
  36.     public void init(Map<String,String> args) {  
  37.         setMode(args.get("mode"));
  38.     }
  39.   
  40.     public Tokenizer create(Reader input) {  
  41.         return new PaodingTokenizer(input, PaodingMaker.make(), tokenCollector);  
  42.     }
  43.    
  44.     /**
  45.      * 默认按最多切分
  46.      */
  47.     public void setMode(String mode) {  
  48.         if (mode == null || "default".equalsIgnoreCase(mode) || MOST_WORDS_MODE.equalsIgnoreCase(mode)) {  
  49.                 tokenCollector = new MostWordsTokenCollector();  
  50.         } else {  
  51.                 tokenCollector = new MaxWordLengthTokenCollector();  
  52.         }
  53.     }
  54. }
复制代码
已经将该类文件与paoding源码打包成了paoding-analysis3.0.jar文件,附件里有下载。


在使用庖丁分词器时,要从http://code.google.com/p/paoding/处下载词典及配置文件。 其中,paoding-dic-home.properties配置文件里,要指定词典的路径,如果词典放在classes目录下面,则词典的路径为:paoding.dic.home=classpath:dic

将这些配置文件及词典放到apache-solr3.2.0/WEB-INF/classes目录下,并将paoding-analysis3.0.jar放到apache-solr3.2.0/WEB-INF/lib目录里。

然后在solr中加入paoding分词器,打开schema.xml文件,位置:solr/home/conf/schema.xml
  1. <fieldType name="text" class="solr.TextField" positionIncrementGap="100">  
  2.       <analyzer type="index">  
  3. <!-- 使用paoding分词器,按最多切分 mode="most-words"这个是在上面哪个类里定义好的。-->
  4.         <tokenizer class="net.paoding.analysis.analyzer.solr.ChineseTokenizerFactory" mode="most-words"/>  
  5.       ··· ···  
  6.       </analyzer>  
  7.       <analyzer type="query">  
  8.          <tokenizer class="net.paoding.analysis.analyzer.solr.ChineseTokenizerFactory" mode="most-words"/>   
  9.         ··· ···  
  10.       </analyzer>  
  11. </fieldType>  
复制代码
再重启tomcat,solr3.2就可以使用paoding分词器了。

文章来源:http://go.cxweb.com.cn/jvyu5
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|创星网络 ( 苏ICP备11027519号|网站地图  

GMT+8, 2024-9-22 06:44 , Processed in 0.098008 second(s), 29 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表