Java 不推荐使用Lucene标记器

Java 不推荐使用Lucene标记器,java,lucene,tokenize,analyzer,Java,Lucene,Tokenize,Analyzer,以下Analyzer扩展有许多不推荐使用的子类。哪些是未弃用的替代品?对于StandardTokenizer、StandardFilter、LowerCaseFilter和StopFilter——如下所示 public class PorterAnalyzer extends Analyzer { private final Version version; public PorterAnalyzer(Version version) { this.version = ver

以下Analyzer扩展有许多不推荐使用的子类。哪些是未弃用的替代品?对于
StandardTokenizer
StandardFilter
LowerCaseFilter
StopFilter
——如下所示

public class PorterAnalyzer extends Analyzer {

  private final Version version;

  public PorterAnalyzer(Version version) {
    this.version = version;
  }

  @Override
  @SuppressWarnings("resource")
  protected TokenStreamComponents createComponents(String fieldName, Reader reader) {
    final StandardTokenizer src = new StandardTokenizer(version, reader);
    TokenStream tok = new StandardFilter(version, src);
    tok = new LowerCaseFilter(version, tok);
    tok = new StopFilter(version, tok, StandardAnalyzer.STOP_WORDS_SET);
    tok = new PorterStemFilter(tok);
    return new TokenStreamComponents(src, tok);
  }

}

只需丢失版本参数


我假设您使用的是Lucene 4.10版,或者类似的版本。所有这些具有版本参数的构造函数都已被弃用(从5.0版开始删除),并替换为不具有该参数的构造函数

public class PorterAnalyzer extends Analyzer {
  @Override
  @SuppressWarnings("resource")
  protected TokenStreamComponents createComponents(String fieldName, Reader reader) {
    final StandardTokenizer src = new StandardTokenizer(reader);
    TokenStream tok = new StandardFilter(src);
    tok = new LowerCaseFilter(tok);
    tok = new StopFilter(tok, StandardAnalyzer.STOP_WORDS_SET);
    tok = new PorterStemFilter(tok);
    return new TokenStreamComponents(src, tok);
  }
}