java - 是否有 Lucene 分析器可以删除所有非字母并将所有大写转换为小写?

标签 java lucene indexing information-retrieval analyzer

我正在使用 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 的工作,从而提供性能优势。 LowercaseTokenizerSimpleAnalyzer 实际使用的内容

关于java - 是否有 Lucene 分析器可以删除所有非字母并将所有大写转换为小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18777445/

相关文章:

必须声明 oracle 标识符 'ctx_ddl' - 添加 dbms_job

java - 在 Java 中获取包装类类型的简单方法

java - 可以从 WEB-INF\lib\{*.jar}\META-INF\resources\WEB-INF 目录访问 tld 文件吗?

java - 迁移 Web 服务应用程序时出现 Websphere 8.5 ClassCastException

c# - 如何在 RavenDB Lucene 查询中包含日期条件

grails - Grails可搜索插件查询

java - EclipseRCP获取类所在的pluginId

http - 如何使用InvokeHTTP从Apache Nifi执行ElasticSearch agg查询?

Python:如何根据特定元素拆分列表

mysql - 如何强制 Mysql 在 IN 子句中使用主索引...?