4

Lucene 3.6.2 で Porter Stemmber クラスを使用するには? ここに私が持っているものがあります:

import org.apache.lucene.analysis.PorterStemmer;
...
PorterStemmer stemmer = new PorterStemmer();
term = stemmer.stem(term);

私は言われています:PorterStemmerはorg.apache.lucene.analysisで公開されていません。パッケージ外からはアクセスできません。

編集: Snowball の使用についてもよく読んでいますが、推奨されていません。JavaでLuceneを使用する正しい方法は何ですか??

4

2 に答える 2

8

1) Lucene トークン分析プロセスの一部として PorterStemmer を使用する場合は、PorterStemFilter を使用します

サンプルコード

 class MyAnalyzer extends Analyzer {
  public final TokenStream tokenStream(String fieldName, Reader reader) {
    return new PorterStemFilter(new LowerCaseTokenizer(reader));
  }
 }

2) 他のアプリケーションに PorterStemmer を使用したい場合は、作者自身によるソースコードを以下に示します: PorterStemmer in Java

于 2013-03-15T00:11:34.493 に答える
0

Lucene 以降のバージョンでは、PorterStemmer は公開されなくなりました。そう

 class MyAnalyzer extends Analyzer {
   public final TokenStream tokenStream(String fieldName, Reader reader) {
    return new PorterStemFilter(new LowerCaseTokenizer(reader));
   }
   }

または、SnowballAnalyzer Stemmer を使用できます。リンク(SnowballAnalyzer は非推奨)

import org.tartarus.snowball.ext.PorterStemmer;
.
.
public static  String applyPorterStemmer(String input) throws IOException {

        PorterStemmer stemmer = new PorterStemmer();
        stemmer.setCurrent(input);
        stemmer.stem();
        return stemmer.getCurrent();
    }
于 2014-11-21T06:14:21.783 に答える