La seguente estensione Analyzer ha un numero di sottoclassi deprecate. Quali sono le sostituzioni non deprecate? Per StandardTokenizer
, StandardFilter
, LowerCaseFilter
, e StopFilter
- come usato sotto.
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);
}
}
risposte:
0 per risposta № 1Basta perdere gli argomenti della versione.
Presumo che stai usando la versione 4 di Lucene.10, o qualcosa in quella vicinanza generale. I costruttori con argomenti di versione per tutti questi sono stati deprecati (e rimossi, a partire dalla versione 5.0) e sostituiti con costruttori che non accettano tale argomento.
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);
}
}