Lucene整合"庖丁解牛"中文分词包

32 篇文章 0 订阅
24 篇文章 0 订阅
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://asfr.blogbus.com/logs/44208118.html

我现在测试用的Lucene版本是lucene-2.4.0,它已经能够支持中文分词,但它是采用一元分词(逐字拆分)的方法,即把每一个汉字当作是一个词,这样会使建立的索引非常庞大,会影响查询效率.所以大多运用lucene的朋友,都会考虑使用其它的中文分词包,这里我就介绍最为常用的"庖丁解牛"分词包,当然它也是一个值得推荐的中文分词包.
        本文主要讲解Lucene如何整合"庖丁解牛"分词包,在整合前,还是先通过一个实例演示一下Lucene自带的中文分词器的分词效果.
  
 package gzu.lyq.luceneAnalyzer;
    import java.io.StringReader;
    import org.apache.lucene.analysis.Analyzer;
    import org.apache.lucene.analysis.Token;
    import org.apache.lucene.analysis.TokenStream;
    import org.apache.lucene.analysis.standard.StandardAnalyzer;
    //测试Lucene自带的中文分词器    
    public class LuceneAnalyzer {
        public static void main(String[] args) throws Exception {
            //StandardAnalyzer: 一元分词  
            Analyzer analyzer = new StandardAnalyzer();
            String  indexStr = "我的QQ号码是58472399";
            StringReader reader = new StringReader(indexStr);
            TokenStream ts = analyzer.tokenStream(indexStr, reader);
            Token t = ts.next();
            while (t != null) {
                System.out.print(t.termText()+"  ");
                t = ts.next();
            }
        }
    }

分词结果:我  的  qq  号  码  是  58472399 
        通过上面的例子就会发现,Lucene自带分词器是将中文逐字拆分的,这是最为原始的分词方法,现在大都不采用.
        下面进入主题,来讲解Lucene和"庖丁解牛"中文分词包的整合.
        "庖丁解牛"的下载地址是http://code.google.com/p/paoding/downloads/list,下载好后解压,我解压在E:\\paoding2_0_4,进入该目录,
首先将paoding-analysis.jar拷贝到项目的WEB-INF/lib目录;接着需要设置环境变量PAODING_DIC_HOME,变量名:PAODING_DIC_HOME 变量值:E:\\paoding2_0_4\\dic 第三步将E:\\paoding2_0_4\\src目录下的paoding-dic-home.properties属性文件拷贝到项目的src目录下,添加一行paoding.dic.home=E:/paoding2_0_4/dic 好了,到这里,已经完成了Lucene和"庖丁解牛"的整合,下面写个例子来测试一下.
   
package gzu.lyq.luceneAnalyzer;
    import java.io.StringReader;
    import org.apache.lucene.analysis.Analyzer;
    import org.apache.lucene.analysis.Token;
    import org.apache.lucene.analysis.TokenStream;
    import net.paoding.analysis.analyzer.PaodingAnalyzer;
    //测试"庖丁解牛"中文分词器的分词效果    
    public class PaodingAnalyzer {
        public static void main(String[] args) throws Exception {
            Analyzer analyzer = new PaodingAnalyzer();
            String  indexStr = "我的QQ号码是58472399";
            StringReader reader = new StringReader(indexStr);
            TokenStream ts = analyzer.tokenStream(indexStr, reader);
            Token t = ts.next();
            while (t != null) {
                System.out.print(t.termText()+"  ");
                t = ts.next();
            }
        }
    }

分词结果:我的  qq  号码  58472399 
如果把indexStr换成是"中华人民共和国万岁" ,那么分词结果为:
中华  华人  人民  共和  共和国  万岁 
        很明显,它的分词效果要比Lucene自带的中文分词器的效果好的多.Lucene整合庖丁解牛中文分词包.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值