java lucene customization analyzer

java - KeywordAnalyzer y LowerCaseFilter/LowerCaseTokenizer



lucene customization (2)

Quiero construir mi propio analizador que use filtros / tokenizadores.

Quiero decir, el mismo campo es Palabra clave (toda la secuencia como un solo token) y minúscula

Si KeywordAnalyzer solo se usa, el valor de campo no distingue entre mayúsculas y minúsculas. Si uso LowerCaseTokenizer o LowerCaseFilter , tengo que combinarlos con otros analizadores que hagan lo mismo KeywordAnalyzer (separados por ninguna letra, por espacios, eliminar palabras de parada, etc.)

La pregunta es : ¿hay alguna forma de convertir ese campo en Palabra clave (toda la secuencia como un solo token) y esa letra minúscula usando filtros o analizadores Lucene o tokenizadores?

(traducción de Google, perdón por los errores)


En Lucene 3.6.2 debe verse así:

import org.apache.lucene.analysis.KeywordAnalyzer; import org.apache.lucene.analysis.KeywordTokenizer; import org.apache.lucene.analysis.LowerCaseFilter; import org.apache.lucene.analysis.LowerCaseTokenizer; import org.apache.lucene.analysis.ReusableAnalyzerBase; import org.apache.lucene.analysis.Tokenizer; import org.apache.lucene.util.Version; public class YourAnalyzer extends ReusableAnalyzerBase { private final Version version; public YourAnalyzer(final Version version) { super(); this.version = version; } @Override protected TokenStreamComponents createComponents(final String fieldName, final Reader reader) { final Tokenizer source = new KeywordTokenizer(reader); return new TokenStreamComponents(source, new LowerCaseFilter(this.version, source)); } }


Esto debería funcionar:

public final class YourAnalyzer extends ReusableAnalyzerBase { @Override protected TokenStreamComponents createComponents(final String fieldName, final Reader reader) { final TokenStream source = new KeywordTokenizer(reader); return new TokenStreamComponents(source, new LowercaseFilter(Version.LUCENE_36, source)); } }