Lucene 自定义分词器

package com.lucene.util;
 
 import java.io.Reader;
 import java.util.Set;
 
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.LetterTokenizer;
 import org.apache.lucene.analysis.LowerCaseFilter;
 import org.apache.lucene.analysis.StopAnalyzer;
 import org.apache.lucene.analysis.StopFilter;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.util.Version;
 
 //定义禁用词分词器
 public class UserDefinedAnalyzer extends Analyzer {
 
     //定义禁用词集合
     private Set stops;
     
     //无参构造器使用默认的禁用词分词器
     public UserDefinedAnalyzer(){
         stops=StopAnalyzer.ENGLISH_STOP_WORDS_SET;
     }
     
     /**
      * 传一个禁用词数组
      * @param sws
      */
     public UserDefinedAnalyzer(String[] sws){
         //使用stopFilter创建禁用词集合
         stops=StopFilter.makeStopSet(Version.LUCENE_35,sws,true);
         //将默认的禁用词添加进集合
         stops.addAll(StopAnalyzer.ENGLISH_STOP_WORDS_SET);
     }
     
     /**
      * 自定义分词器
      */
     @Override
     public TokenStream tokenStream(String str, Reader reader) {
         
         return new StopFilter    
                 (Version.LUCENE_35,
                         new LowerCaseFilter    
                 (Version.LUCENE_35,
                         new LetterTokenizer(
                 Version.LUCENE_35, reader)), stops);
     }
 

 }

@Test
    public void test04(){
        Analyzer a1=new UserDefinedAnalyzer(new String[]{"my","name"});
        //Analyzer a1=new UserDefinedAnalyzer();
        String str="my name is paul";
        AnalyzerUtil.displayToken(str, a1);
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值