首页 新闻 会员 周边 捐助

lucene2.4集成几种中文分词实例代码

0
[已关闭问题]

转载书客网www.8211.cn

 

原地址:http://www.8211.cn/repository/list_2651.html

 

package com.test;
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;
public class All_Test {
      private static String string = "书客网www.8211.cn计算机电子文档分享平台";
         public static void Standard_Analyzer(String str) throws Exception{
                Analyzer analyzer = new StandardAnalyzer();        
                Reader r = new StringReader(str);        
                StopFilter sf = (StopFilter) analyzer.tokenStream("", r);
                System.out.println("=====StandardAnalyzer====");
                System.out.println("分析方法:默认没有词只有字(一元分词)");
                Token t;        
               while ((t = sf.next()) != null) {        
                      System.out.println(t.termText());        
                }      
          }
         public static void CJK_Analyzer(String str) throws Exception{
                Analyzer analyzer = new CJKAnalyzer();        
                Reader r = new StringReader(str);        
                StopFilter sf = (StopFilter) analyzer.tokenStream("", r);
                System.out.println("=====CJKAnalyzer====");
                System.out.println("分析方法:交叉双字分割(二元分词)");
                Token t;        
               while ((t = sf.next()) != null) {        
                      System.out.println(t.termText());        
                }      
          }
         public static void Chiniese_Analyzer(String str) throws Exception{
                Analyzer analyzer = new ChineseAnalyzer();        
                Reader r = new StringReader(str);        
                TokenFilter tf = (TokenFilter) analyzer.tokenStream("", r);
                System.out.println("=====chinese analyzer====");
                System.out.println("分析方法:基本等同StandardAnalyzer(一元分词)");
                Token t;        
               while ((t = tf.next()) != null) {        
                      System.out.println(t.termText());        
                }      
          }
         public static void ik_CAnalyzer(String str) throws Exception{
               Analyzer analyzer = new MIK_CAnalyzer();
               // Analyzer analyzer = new IK_CAnalyzer();
                Reader r = new StringReader(str);
                TokenStream ts = (TokenStream)analyzer.tokenStream("", r);
                System.out.println("=====IK_CAnalyzer====");
                System.out.println("分析方法:字典分词,正反双向搜索");
                Token t;   
               while ((t = ts.next()) != null) {   
                     System.out.println(t.termText());   
                }   
          }
         public static void main(String[] args) throws Exception{
                String str = string;
                System.out.println("我们测试的字符串是:"+str);
              
                Standard_Analyzer(str);
                CJK_Analyzer(str);
                Chiniese_Analyzer(str);
                ik_CAnalyzer(str);
          }

}


lucene2.4集成几种分词实例
运行结果如下:



我们测试的字符串是:书客网www.8211.cn计算机电子文档分享平台
=====StandardAnalyzer====
分析方法:默认没有词只有字(一元分词)



www.8211.cn











=====CJKAnalyzer====
分析方法:交叉双字分割(二元分词)
书客
客网
8211
cn
计算
算机
机电
电子
子文
文档
档分
分享
享平
平台
=====chinese analyzer====
分析方法:基本等同StandardAnalyzer(一元分词)



www
cn











=====IK_CAnalyzer====
分析方法:字典分词,正反双向搜索
书客网
www
8211
cn
计算机
机电
电子
文档
分享
平台

亚洲主人的主页 亚洲主人 | 初学一级 | 园豆:170
提问于:2009-11-11 15:02
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册