Вопрос по customization, lucene, java, analyzer – KeywordAnalyzer и LowerCaseFilter / LowerCaseTokenizer

4

Я хочу построить свой собственный анализатор, который использует оба фильтра / токенизаторы.

Я имею в виду, то же полеKeyword (весь поток как один токен) и строчные буквы

ЕслиKeywordAnalyzer используйте только, значение поля сохраняет без учета регистра. Если я используюLowerCaseTokenizer или жеLowerCaseFilter Я должен объединить их с другими анализаторами, которые делают то же самоеKeywordAnalyzer (отделяется без буквы, пробелами, удаляет стоп-слова и т. д.)

The question is: Есть ли способ сделать это поле ключевым словом (весь поток как один токен), и этоlowercase используя фильтры или анализаторы Lucene или токенизаторы?

(перевод Google, извините за ошибки)

Ваш Ответ

2   ответа
1

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));
    }

}
6

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));
  }
}

Похожие вопросы