1. import java.io.Reader; 
  2. import java.util.Set; 
  3.  
  4. import org.apache.lucene.analysis.Analyzer; 
  5. import org.apache.lucene.analysis.LetterTokenizer; 
  6. import org.apache.lucene.analysis.LowerCaseFilter; 
  7. import org.apache.lucene.analysis.StopAnalyzer; 
  8. import org.apache.lucene.analysis.StopFilter; 
  9. import org.apache.lucene.analysis.TokenStream; 
  10. import org.apache.lucene.util.Version; 
  11. import org.junit.Test; 
  12.  
  13.  
  14. public class MyStopAnalyzer extends Analyzer { 
  15.  
  16.     private Set stops; 
  17.     public MyStopAnalyzer(){ 
  18.         //原来的停用词 
  19.         stops = StopAnalyzer.ENGLISH_STOP_WORDS_SET; 
  20.     } 
  21.     public MyStopAnalyzer(String[] sws){ 
  22.         //会自动将字符串数组转换为set 
  23.         stops = StopFilter.makeStopSet(Version.LUCENE_35, sws, true); 
  24.         //将原来的挺用词加入到现有的停用词集合 
  25.         stops.addAll(StopAnalyzer.ENGLISH_STOP_WORDS_SET); 
  26.     } 
  27.     @Override 
  28.     public TokenStream tokenStream(String fieldName, Reader reader) { 
  29.         return new StopFilter(Version.LUCENE_35,  
  30.                     new LowerCaseFilter(Version.LUCENE_35, 
  31.                         new LetterTokenizer(Version.LUCENE_35, reader)),stops); 
  32.     } 
  33.      

 

 
  
  1. import org.apache.lucene.analysis.Analyzer; 
  2. import org.junit.Test; 
  3.  
  4.  
  5. public class TestMyStopAnalyzer { 
  6.  
  7.  
  8.     @Test 
  9.     public void test04(){ 
  10.         Analyzer mya = new MyStopAnalyzer(new String[]{"I","you"}); 
  11.         String txt = "thank you ,how are you? i love you"
  12.         AnalyzerUtil.displayToken(txt, mya); 
  13.     } 
  14.      

 

 
  
  1. import java.io.IOException; 
  2. import java.io.StringReader; 
  3.  
  4. import javax.swing.text.AttributeSet.CharacterAttribute; 
  5.  
  6. import org.apache.lucene.analysis.Analyzer; 
  7. import org.apache.lucene.analysis.SimpleAnalyzer; 
  8. import org.apache.lucene.analysis.StopAnalyzer; 
  9. import org.apache.lucene.analysis.TokenStream; 
  10. import org.apache.lucene.analysis.WhitespaceAnalyzer; 
  11. import org.apache.lucene.analysis.standard.StandardAnalyzer; 
  12. import org.apache.lucene.analysis.tokenattributes.CharTermAttribute; 
  13. import org.apache.lucene.analysis.tokenattributes.OffsetAttribute; 
  14. import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute; 
  15. import org.apache.lucene.analysis.tokenattributes.TypeAttribute; 
  16. import org.apache.lucene.util.Version; 
  17. import org.junit.Test; 
  18.  
  19.  
  20. public class AnalyzerUtil { 
  21.     public static void displayToken(String txt,Analyzer a){ 
  22.         TokenStream ts = a.tokenStream("content"new StringReader(txt)); 
  23.         //位置增量的属性,存储词汇单元之间的距离 
  24.         PositionIncrementAttribute pia = ts.addAttribute(PositionIncrementAttribute.class); 
  25.         //每个词汇单元的位置偏移量 
  26.         OffsetAttribute oa = ts.addAttribute(OffsetAttribute.class); 
  27.         //存储每一个与会单元的信息(分词单元信息) 
  28.         CharTermAttribute ca = ts.addAttribute(CharTermAttribute.class); 
  29.         //是用的分词器的类型信息 
  30.         TypeAttribute ta = ts.addAttribute(TypeAttribute.class); 
  31.         try { 
  32.             while(ts.incrementToken()){ 
  33.                 System.out.println(ca.toString()+"  positionincrement:"+pia.getPositionIncrement()+"  "+"offset:"+oa.startOffset()+"-"+oa.endOffset()+"   type:"+ta.type()); 
  34.             } 
  35.         } catch (IOException e) { 
  36.             // TODO Auto-generated catch block 
  37.             e.printStackTrace(); 
  38.         } 
  39.         System.out.println("-----------"); 
  40.     } 
  41.      

mmseg中文分词器的使用,在这里我是用的分词器是1.8.5

 

 
  
  1. import java.io.StringReader; 
  2.  
  3. import org.apache.lucene.analysis.Analyzer; 
  4. import org.junit.Test; 
  5.  
  6. import com.chenlb.mmseg4j.analysis.MMSegAnalyzer; 
  7.  
  8.  
  9. public class TestMMsegAnalyzer { 
  10.     @Test 
  11.     public void test01(){ 
  12.         Analyzer msgA = new MMSegAnalyzer(); 
  13.         String txt = "白云山我来自中国,你好,我叫大工,"
  14.         AnalyzerUtil.displayToken(txt, msgA); 
  15.     }