【发布时间】:2020-02-17 15:30:56
【问题描述】:
我正在尝试在 Lucene 8.3.0 中创建一个自定义分析器,该分析器使用词干提取并使用文件中的自定义停用词过滤给定的文本。 更清楚地说,我不想使用默认的停用词过滤器并在其上添加一些单词,我只想使用 stopWords.txt 文件中的一组停用词进行过滤。 我怎样才能做到这一点?
这是我一直写到现在,但我不确定它是否正确
public class MyAnalyzer extends Analyzer{
//public class MyAnalyzer extends Analyzer {
@Override
protected TokenStreamComponents createComponents(String fieldName) {
// public TokenStream tokenStream(String fieldName, Reader reader) {
Tokenizer tokenizer = new StandardTokenizer();
TokenStream tokenStream = new StandardFilter(tokenizer);
tokenStream = new LowerCaseFilter(tokenStream);
tokenStream = new StopFilter(tokenStream,StopAnalyzer.ENGLISH_STOP_WORDS_SET);
//Adding Porter Stemming filtering
tokenStream = new PorterStemFilter(tokenStream);
//return tokenStream;
return new TokenStreamComponents(tokenizer, tokenStream);
}
}
首先我不确定结构是否正确,现在我正在使用 StopAnalyzer 的 StopFilter 来测试它(但是它不起作用)。
【问题讨论】:
-
你能提供一些你已经尝试过的代码吗?
-
这就是我写的。我需要的是分析器只返回一个处理过的令牌流。我阅读了 Lucene 文档,但我很困惑