我正在使用 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
documentation所示
LetterTokenizer
将标记定义为相邻字母的最大字符串,并且 LowercaseFilter
按照 jar 头上所说的去做。
这是一个相当常见的组合,因此还有 LowercaseTokenizer它一步完成 LowercaseFilter 和 LetterTokenizer 的工作,从而提供性能优势。 LowercaseTokenizer
是 SimpleAnalyzer
实际使用的内容
关于java - 是否有 Lucene 分析器可以删除所有非字母并将所有大写转换为小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18777445/