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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章