<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    DANCE WITH JAVA

    開發出高質量的系統

    常用鏈接

    統計

    積分與排名

    好友之家

    最新評論

    lucene的中文分詞器

    lucene的中文分詞器到現在還沒有好的解決辦法。下邊介紹了兩個lucene自己提供的分詞器和一個javaeye上的網友實現的分詞器。關于各個分詞器的不同見代碼中的print信息。直接運行得到console的輸出結果更容易對比不同。
    package analyzer;

    import java.io.Reader;
    import java.io.StringReader;

    import org.apache.lucene.analysis.Analyzer;
    import org.apache.lucene.analysis.StopFilter;
    import org.apache.lucene.analysis.Token;
    import org.apache.lucene.analysis.TokenFilter;
    import org.apache.lucene.analysis.TokenStream;
    import org.apache.lucene.analysis.cjk.CJKAnalyzer;
    import org.apache.lucene.analysis.cn.ChineseAnalyzer;
    import org.apache.lucene.analysis.standard.StandardAnalyzer;
    import org.mira.lucene.analysis.IK_CAnalyzer;
    import org.mira.lucene.analysis.MIK_CAnalyzer;

    import com.sohospace.lucene.analysis.xanalyzer.XAnalyzer;
    import com.sohospace.lucene.analysis.xanalyzer.XFactory;
    import com.sohospace.lucene.analysis.xanalyzer.XTokenizer;
    //中文分詞使用了Paoding的分詞技術,特表示感謝
    public class TestCJKAnalyzer {
        
    private static String testString1 = "中華人民共和國在1949年建立,從此開始了新中國的偉大篇章";
        
    private static String testString2 = "比爾蓋茨從事餐飲業和服務業方面的工作";
        
    public static void testStandard(String testString) throws Exception{
            Analyzer analyzer 
    = new StandardAnalyzer();      
            Reader r 
    = new StringReader(testString);      
            StopFilter sf 
    = (StopFilter) analyzer.tokenStream("", r);
            System.err.println(
    "=====standard analyzer====");
            System.err.println(
    "分析方法:默認沒有詞只有字");
            Token t;      
            
    while ((t = sf.next()) != null{      
                System.out.println(t.termText());      
            }
         
        }

        
    public static void testCJK(String testString) throws Exception{
            Analyzer analyzer 
    = new CJKAnalyzer();      
            Reader r 
    = new StringReader(testString);      
            StopFilter sf 
    = (StopFilter) analyzer.tokenStream("", r);
            System.err.println(
    "=====cjk analyzer====");
            System.err.println(
    "分析方法:交叉雙字分割");
            Token t;      
            
    while ((t = sf.next()) != null{      
                System.out.println(t.termText());      
            }
         
        }

        
    public static void testChiniese(String testString) throws Exception{
            Analyzer analyzer 
    = new ChineseAnalyzer();      
            Reader r 
    = new StringReader(testString);      
            TokenFilter tf 
    = (TokenFilter) analyzer.tokenStream("", r);
            System.err.println(
    "=====chinese analyzer====");
            System.err.println(
    "分析方法:基本等同StandardAnalyzer");
            Token t;      
            
    while ((t = tf.next()) != null{      
                System.out.println(t.termText());      
            }
         
        }

        
    public static void testPaoding(String testString) throws Exception{
            XAnalyzer analyzer 
    = XFactory.getQueryAnalyzer();   
            Reader r 
    = new StringReader(testString);   
            XTokenizer ts 
    = (XTokenizer) analyzer.tokenStream("", r);   
            System.err.println(
    "=====paoding analyzer====");
            System.err.println(
    "分析方法:字典分詞,去掉停止詞。在字典不能匹配的情況下使用CJKAnalyzer的分割發。");
            Token t;   
            
    while ((t = ts.next()) != null{   
               System.out.println(t.termText());   
            }
       
        }

        
    public static void testJe(String testString) throws Exception{
    //        Analyzer analyzer = new MIK_CAnalyzer();
            Analyzer analyzer = new IK_CAnalyzer();
            Reader r 
    = new StringReader(testString); 
            TokenStream ts 
    = (TokenStream)analyzer.tokenStream("", r);
            System.err.println(
    "=====je analyzer====");
            System.err.println(
    "分析方法:字典分詞,正反雙向搜索,具體不明");
            Token t;   
            
    while ((t = ts.next()) != null{   
               System.out.println(t.termText());   
            }
       
        }

        
    public static void main(String[] args) throws Exception{
    //        String testString = testString1;
            String testString = testString1;
            System.out.println(testString);
            
            testStandard(testString);
            testCJK(testString);
            testPaoding(testString);
            
    //        testChiniese(testString);
    //        testJe(testString);
        }


    }

    posted on 2007-06-22 09:15 dreamstone 閱讀(10357) 評論(4)  編輯  收藏 所屬分類: 搜索引擎lucence

    評論

    # re: lucene的中文分詞器 2007-08-14 11:38 linliangyi2006

    偶然看到哈,結果呢?!  回復  更多評論   

    # re: lucene的中文分詞器 2008-11-03 14:54 想研究研究

    樓主能否發一個包上來啊,java里面沒有你用到的包  回復  更多評論   

    # re: lucene的中文分詞器[未登錄] 2011-06-15 18:37 Jane

    能否發個詞典過來呢?  回復  更多評論   

    # re: lucene的中文分詞器[未登錄] 2011-06-15 18:37 Jane

    @Jane
    我的QQ郵箱是573505443@qq.com  回復  更多評論   

    主站蜘蛛池模板: 一个人免费观看日本www视频| 亚洲毛片αv无线播放一区| 亚洲精品9999久久久久无码| 中文字幕无码不卡免费视频| 亚洲导航深夜福利| 免费黄色网址网站| 亚洲一级毛片视频| 好大好硬好爽免费视频| 亚洲午夜无码久久久久小说| 中国china体内裑精亚洲日本| 国产美女在线精品免费观看| 美女视频黄免费亚洲| 午夜dj免费在线观看| 亚洲av成人一区二区三区在线播放 | 亚洲精品高清国产麻豆专区| 131美女爱做免费毛片| 亚洲午夜久久久久久尤物| 99久久免费国产精品特黄| 亚洲综合一区无码精品| 在线观看免费精品国产| 黄色网址免费在线| 狠狠亚洲狠狠欧洲2019| 久久免费视频99| 亚洲国产成人久久99精品| 成人午夜视频免费| 美女黄频免费网站| 伊人久久大香线蕉亚洲| 久久免费线看线看| 亚洲免费二区三区| 免费看的黄色大片| 成年大片免费高清在线看黄| 亚洲乱码国产乱码精品精| 三年片在线观看免费观看大全一 | 亚洲一卡2卡3卡4卡国产网站| 国内免费高清在线观看| 羞羞漫画在线成人漫画阅读免费| 亚洲人精品午夜射精日韩 | 久久嫩草影院免费看夜色| 久久久综合亚洲色一区二区三区 | 女人张腿给男人桶视频免费版| 日日摸日日碰夜夜爽亚洲|