Lucene Porter Stemmer not public

前端 未结 2 822
夕颜
夕颜 2020-12-19 15:23

How to use the Porter Stemmber class in Lucene 3.6.2? Here is what I have:

import org.apache.lucene.analysis.PorterStemmer;
...
PorterStemmer stemmer = new          


        
相关标签:
2条回答
  • 2020-12-19 15:48

    1) If you want to use PorterStemmer as part of Lucene token analysis process, use PorterStemFilter

    Sample code

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

    2) If you want to use PorterStemmer just for any other application, here is the sourcecode by author himself: PorterStemmer in Java

    0 讨论(0)
  • 2020-12-19 15:56

    In Lucene later version, PorterStemmer no longer public. So

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

    Or you can use SnowballAnalyzer Stemmer.link (SnowballAnalyzer is deprecated)

    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();
        }
    
    0 讨论(0)
提交回复
热议问题