360SDN.COM

首页/Java/列表

Lucene分词器之庖丁解牛

来源:  2017-09-29 13:54:58    评论:0点击:

原文:http://blog.csdn.net/ld_flex/article/details/7681943
我现在测试用的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  号  码  是  234456   
        通过上面的例子就会发现,Lucene自带分词器是将中文逐字拆分的,这是最为原始的分词方法,现在大都不采用. 
        下面进入主题,来讲解Lucene和"庖丁解牛"中文分词包的整合. 
        "庖丁解牛"的下载地址是
[url]http://code.google.com/p/paoding/downloads/list[/url],下载好后解压,我解压在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号码是3453245"; 
            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  号码  3453245   
如果把indexStr换成是"中华人民共和国万岁" ,那么分词结果为: 
中华  华人  人民  共和  共和国  万岁
  
注意:用庖丁分词器的时候,首先加入的包路径中不能有中文,似乎中文不认,要加入common-logging.jar包,要不然会提示找不到类。

为您推荐

友情链接 |九搜汽车网 |手机ok生活信息网|ok生活信息网|ok微生活
 Powered by www.360SDN.COM   京ICP备11022651号-4 © 2012-2016 版权