我正在使用Lucene 4.4,我有一个项目要做。在该项目中,必须删除所有非字母,并且必须将所有大写字母转换为小写字母。我知道有一个用于删除非字母的分析器。
但是Lucene中是否有一个分析器可以删除所有非字母并将所有大写字母转换为小写字母?
干杯。
实际上,是的,有一个分析器可以做到这一点。 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);
}
};
当您对分析器有非常具体的要求时,通常需要通过链接一个分词器和一些过滤器来设计自己的过滤器,如Analyzer
文档所示 LetterTokenizer
将令牌定义为相邻字母的最大字符串,LowercaseFilter
执行其在锡上所说的操作。
这是一个相当常见的组合,因此还有 LowercaseTokenizer,它可以一步完成 LowercaseFilter 和 LetterTokenizer 的工作,从而提供性能优势。 LowercaseTokenizer
是SimpleAnalyzer
实际使用的