KeywordAnalyzer и LowerCaseFilter/LowerCaseTokenizer

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

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

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

Вопрос заключается в следующем: есть ли способ сделать это поле ключевым словом (весь поток как один токен) и использовать строчные буквы с помощью фильтров или анализаторов Lucene или токенизаторов?

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

2 ответа

Решение

Это должно работать:

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

В Lucene 3.6.2 это должно выглядеть так:

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

}
Другие вопросы по тегам