0

我正在寻求有关如何在 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

4

1 回答 1

1

过滤器通常集成到分析器中。要创建您自己的分析器,您真正需要重写的只是TokenStream方法。

如果您只想将干过滤器放入 StandardAnalyzer,我会tokenStream从 StandardAnalyzer 复制实现,并在适当的位置添加过滤器(使用词干分析器,通常它们应该在过滤器链的后期添加)。

@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(在其他语言中),它已经有一个词干分析器。

于 2014-02-21T21:59:37.273 回答