我正在寻找有关如何在Lucene 4.0中使用类PorterStemFilter的帮助。以下是我从http://www.lucenetutorial.com/lucene-in-5-minutes.html获取的索引器:
...
StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_40);
Directory index = new RAMDirectory();
IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_40, analyzer);
IndexWriter w = new IndexWriter(index, config);
addDoc(w, "Lucene in Action", "193398817");
addDoc(w, "Lucene for Dummies", "55320055Z");
...
有人可以帮助我使用PorterStemFilter类
的位置和方式答案 0 :(得分:1)
过滤器通常包含在Analyzer中。要创建自己的Analyzer,您唯一需要覆盖的是TokenStream
方法。
如果您只想将干式过滤器放入StandardAnalyzer,我会从StandardAnalyzer复制tokenStream
的实现,并在适当的位置添加过滤器(使用词干分析器,通常应该在过滤链)。
@Override
public TokenStream tokenStream(String fieldName, Reader reader) {
StandardTokenizer tokenStream = new StandardTokenizer(Version.LUCENE_46, reader);
tokenStream.setMaxTokenLength(255);
TokenStream result = new StandardFilter(tokenStream);
result = new LowerCaseFilter(result);
result = new StopFilter(true, result, StopAnalyzer.ENGLISH_STOP_WORDS_SET);
//Adding the StemFilter here
result = new PorterStemFilter(result);
return result;
}
或者,您可以使用EnglishAnalyzer
(other languages之间),它已经有一个词干分析器。