简体   繁体   English

Lucene Porter Stemmer不公开

[英]Lucene Porter Stemmer not public

How to use the Porter Stemmber class in Lucene 3.6.2? 如何在Lucene 3.6.2中使用Porter Stemmber类? Here is what I have: 这是我有的:

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

I am being told: PorterStemmer is not public in org.apache.lucene.analysis; 我被告知:在org.apache.lucene.analysis中,PorterStemmer不公开; cannot be accessed from outside package. 无法从外部包裹访问。

Edit: I also read extensively about using Snowball, but it isn't encouraged. 编辑:我也广泛阅读有关使用Snowball的内容,但不鼓励这样做。 What is the right way to stem using Lucene in Java?? 什么是在Java中使用Lucene的正确方法?

1) If you want to use PorterStemmer as part of Lucene token analysis process, use PorterStemFilter 1)如果要将PorterStemmer用作Lucene令牌分析过程的一部分,请使用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 2)如果你想将PorterStemmer用于任何其他应用程序,这里是作者自己的源代码: Java中的PorterStemmer

In Lucene later version, PorterStemmer no longer public. 在Lucene后期版本中,PorterStemmer不再公开。 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. 或者你可以使用SnowballAnalyzer Stemmer。 link (SnowballAnalyzer is deprecated) 链接 (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();
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM