我正在使用Lucene 4.4,我有一个项目要做。在该项目中,必须删除所有非字母,并且必须将所有大写字母转换为小写字母。 我知道有一个用于删除非字母的分析器。
但Lucene中是否有一个分析器可以删除所有非字母并将所有大写字母转换为小写字母?
干杯。
答案 0 :(得分: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
documentation所示
LetterTokenizer
将令牌定义为相邻字母的最大字符串,LowercaseFilter
执行它在锡上所说的内容。
这是一个相当常见的组合,因此还有LowercaseTokenizer一步完成LowercaseFilter和LetterTokenizer的工作,从而提供了性能优势。 LowercaseTokenizer
SimpleAnalyzer