PorterStemmer在Lucene

时间:2014-02-21 21:32:15

标签: lucene indexing stemming porter-stemmer

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

的位置和方式

1 个答案:

答案 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;
}

或者,您可以使用EnglishAnalyzerother languages之间),它已经有一个词干分析器。