lucene-词干分析与保留空位和停用词

本文介绍了一种自定义分析器PositionalPorterStopAnalyzer,该分析器能够有效去除停用词并应用Porter词干还原过滤器。此外,还探讨了如何使用PharseQuery处理短语查询中的空缺词。

1、分析器可以剔除所有停用词,并将这些词本来所处的位置留空,还可以对词干过滤器进行选择

2、移除停用词

public class PositionStopFilter extends TokenFilter{

private Set stopWords;

publicPositioinStopFilter(TokenSteam in,Set stpWords){

super(in);

this.stopWords=stopWords;

}

 

public final Token next()throws IOException{

int increment=0;

for(Token token=input.next();token!=null;token=input.next()){

if (!stopWords.contains(token.termText())){

token.getPositionIncrement()+increment;

return token;

}

increment++;

}

return null;
}

3、自己定义的分析器

public class PositionalPorterStopAnalyer extends Analyer{

private Set stopWords;

publicPositionalPortStopAnalyer(){

this(StopAnalyzer.ENGLISH_STOP_WORDS);

}

publicPositionalPortStopAnalyzer(String[] stopList){

stopWords=stopFilter.makeStopset(stopList);

}

//下面的代码使用了词干还原PorterStemFilter

public TokenStreamtokenStream(String fieldName,Reader reader){

return new PorterStemFilter(

new PositionalStopFilter{

new LowerCaseTokenizer(reader),stopwords));

}

)

}

}

4、使用PharseQuery允许查询的短语有空缺,但是必须使用setPhraseSlop(n)进行设置,将空缺设置为n,空缺一般是停用词造成的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值