Lucene中一些英文分析器 Analyzer

注意:并不真正的支持汉语分词,不多说了,上代码。

 

Lucene自带的几个分词器WhitespaceAnalyzerSimpleAnalyzerStopAnalyzerStandardAnalyzerChineseAnalyzerCJKAnalyzer等。前面三个只适用于英文分词,StandardAnalyzer对可最简单地实现中文分词,即二分法,每个字都作为一个词,这样分出来虽然全面,但有很多缺点,比如,索引文件过大,检索时速度慢等。ChineseAnalyzer是按字分的,StandardAnalyzer对中文的分词没有大的区别。 CJKAnalyzer是按两字切分的比较武断,并且会产生垃圾Token,影响索引大小。以上分词器过于简单,无法满足现实的需求,所以我们需要实现自己的分词算法。

 

[java]  view plain copy
  1. import java.io.IOException;  
  2. import java.io.Reader;  
  3. import java.io.StringReader;  
  4.   
  5. import org.apache.lucene.analysis.Analyzer;  
  6. import org.apache.lucene.analysis.SimpleAnalyzer;  
  7. import org.apache.lucene.analysis.StopAnalyzer;  
  8. import org.apache.lucene.analysis.StopFilter;  
  9. import org.apache.lucene.analysis.Token;  
  10. import org.apache.lucene.analysis.WhitespaceAnalyzer;  
  11. import org.apache.lucene.analysis.standard.StandardAnalyzer;  
  12.   
  13. /** 
  14.  * 此次测试使用的是Lucene1.4.3  
  15.  * @author 李晗 
  16.  * 
  17.  */  
  18. public class Test {    
  19.   
  20.     private static String STR = "i am lihan, i am a boy, i come from Beijing,我是来自北京的李晗";  
  21.     // WhitespaceAnalyzer 分析方法:空格分割  
  22.     public static Analyzer testWhitespaceAnalyzer(){  
  23.         Analyzer alalyzer = new WhitespaceAnalyzer();  
  24.         return alalyzer;  
  25.     }  
  26.     //SimpleAnalyzer 分析方法:空格及各种符号分割  
  27.     public static Analyzer testSimpleAnalyzer(){  
  28.         Analyzer analyzer = new SimpleAnalyzer();  
  29.         return analyzer;  
  30.     }  
  31.     //StopAnalyzer 分析方法:空格及各种符号分割,去掉停止词,停止词包括 is,are,in,on,the等无实际意义的词  
  32.     public static Analyzer testStopAnalyzer(){  
  33.         Analyzer analyzer = new StopAnalyzer();  
  34.         return analyzer;  
  35.     }  
  36.     //StandardAnalyzer 分析方法:混合分割,包括了去掉停止词,支持汉语  
  37.     public static Analyzer testStandardAnalyzer(){  
  38.         Analyzer analyzer = new StandardAnalyzer();  
  39.         return analyzer;  
  40.     }  
  41.     public static void main(String[] a){  
  42.         Analyzer analyzer = testStopAnalyzer();  
  43.         Reader r = new StringReader(STR);  
  44.         //WhitespaceAnalyzer 和SimpleAnalyzer使用Tokenizer  
  45.         //Tokenizer ts = (Tokenizer) analyzer.tokenStream("", r);   
  46.         //StopAnalyzer和StandardAnalyzer 使用StopFilter  
  47.         StopFilter sf = (StopFilter) analyzer.tokenStream("", r);     
  48.         Token t ;  
  49.         try {  
  50.             while((t = sf.next()) != null){  
  51.                 System.out.println(t.termText());  
  52.             }  
  53.         } catch (IOException e) {  
  54.             e.printStackTrace();  
  55.         }  
  56.     }  
  57. }    

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值