FileDocCategorySizeDatePackage
PorterStemFilter.javaAPI DocApache Lucene 1.4.32007Tue Mar 30 00:48:00 BST 2004org.apache.lucene.analysis

PorterStemFilter

public final class PorterStemFilter extends TokenFilter
Transforms the token stream as per the Porter stemming algorithm. Note: the input to the stemming filter must already be in lower case, so you will need to use LowerCaseFilter or LowerCaseTokenizer farther down the Tokenizer chain in order for this to work properly!

To use this filter with other analyzers, you'll want to write an Analyzer class that sets up the TokenStream chain as you want it. To use this with LowerCaseTokenizer, for example, you'd write an analyzer like this:

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

Fields Summary
private PorterStemmer
stemmer
Constructors Summary
public PorterStemFilter(TokenStream in)

    super(in);
    stemmer = new PorterStemmer();
  
Methods Summary
public final org.apache.lucene.analysis.Tokennext()
Returns the next input Token, after being stemmed

    Token token = input.next();
    if (token == null)
      return null;
    else {
      String s = stemmer.stem(token.termText);
      if (s != token.termText) // Yes, I mean object reference comparison here
  	    token.termText = s;
      return token;
    }