KeywordAnalyzer和LowerCaseFilter/LowerCaseTokenizer

jot*_*iez 4 java lucene customization analyzer

我想构建我自己的分析器,它使用两个过滤器/标记器.

我的意思是,相同的字段是关键字(整个流作为单个标记)和小写

如果KeywordAnalyzer仅使用,则field的值保持不区分大小写.如果我使用LowerCaseTokenizerLowerCaseFilter,我必须将它们与其他分析器结合使用,这些分析器执行相同的操作KeywordAnalyzer(由无字母,空格,删除停用词等分隔)

问题是:有没有办法将该字段作为关键字(整个流作为单个标记)和使用过滤器或分析器Lucene或标记化器的小写

(谷歌翻译,抱歉错误)

jpo*_*ntz 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));
  }
}
Run Code Online (Sandbox Code Playgroud)