我正在使用Lucene4.4,我有一个项目要做。在该项目中,所有非字母必须被删除,所有大写字母必须转换为小写字母。我知道有一个用来除去非字母的分析器。
但是,在Lucene中是否有一个分析器,既可以删除所有非字母,又可以将所有大写字母转换成小写字母?
干杯。
发布于 2013-09-13 05:43:42
事实上,是的,有一个分析器可以做到这一点。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和一些类似的过滤器来设计您自己的令牌,如文档 LetterTokenizer中所示,令牌定义为相邻字母的最大字符串,LowercaseFilter按照它在tin上说的做。
这是一个相当常见的组合,因此也有LowercaseTokenizer,它在一步内完成LowercaseFilter和LetterTokenizer的工作,从而提供了性能优势。LowercaseTokenizer是SimpleAnalyzer实际使用的
https://stackoverflow.com/questions/18777445
复制相似问题