首页 > 代码库 > Lucene分词器之庖丁解牛

Lucene分词器之庖丁解牛

Lucene分词器之庖丁解牛

 

留意:这儿配置环境变量要重新启动体系后收效

 

我如今测验用的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;  *

@param url = "http://www.shoudashou.com","plus");

 * @param url = "http://www.fanselang.com","plus");

 * @param url = "http://www.3h5.cn","plus");

 * @param url = "http://www.4lunwen.cn","plus");

 * @param url = "http://www.zx1234.cn","plus");

 * @param url = "http://www.penbar.cn","plus");

 * @param url = "http://www.lunjin.net","plus");

 * @param url = "http://www.ssstyle.cn","plus");

 * @param url = "http://www.91fish.cn","plus");

    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包,要不然会提示找不到类。