2

I am using Lucene 4.4 and I have a project to do. In that project all non-letters must be removed and all upper-case letters must be converted to lower-case. I know that there is an analyzer for removing non-letters.

But is there an analyzer in Lucene to both removes all non-letters and converts all upper-cases to lower-case?

Cheers.

4

1 回答 1

3

实际上,是的,有一个分析器可以做到这一点。 SimpleAnalyzer.


以下做(几乎)完全相同的事情:

Analyzer analyzer = new Analyzer() {
 @Override
  protected TokenStreamComponents createComponents(String fieldName, Reader reader) {
    Tokenizer source = new LetterTokenizer(Version.LUCENE_44, reader);
    TokenStream filter = new LowercaseFilter(Version.LUCENE_44, source);
    return new TokenStreamComponents(source, filter);
  }
};

当您对分析器有非常具体的要求时,通常您需要通过链接 Tokenizer 和一些类似这样的过滤器来设计自己的,并且如Analyzer文档 LetterTokenizer中所示将标记定义为相邻字母的最大字​​符串,并LowercaseFilter执行它锡上说。

这是一种相当常见的组合,因此还有LowercaseTokenizer,它可以一步完成 LowercaseFilter 和 LetterTokenizer 的工作,因此提供了性能优势。 LowercaseTokenizer是实际使用的SimpleAnalyzer

于 2013-09-13T05:43:42.350 回答