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  號  碼  是  58472399  
        通過上面的例子就會發現,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號碼是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自帶的中文分詞器的效果好的多.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章