【问题标题】:Lucene StandardAnalyzer 3.5 TypeAttributeLucene StandardAnalyzer 3.5 TypeAttribute
【发布时间】:2011-12-27 12:26:36
【问题描述】:

我最近注意到 Lucene StandardAnalyzer 的行为自 3.1 版以来发生了一些变化。具体来说,3.0 和以前的版本将电子邮件、IP 地址、公司名称等识别为单独的词汇类型,而更高版本则不识别。

例如,对于输入文本:“example@mail.com 127.0.0.1 H&M”,3.0 分析器将识别以下类型:

1: example@mail.com: 0->16: EMAIL>

2: 127.0.0.1: 17->26: 主机>

3: h&m: 27->30: 公司

但是,3.1 及更高版本针对相同的输入文本提供以下输出:

1:示例:0->7:ALPHANUM>

2: mail.com: 8->16: ALPHANUM>

3: 127.0.0.1: 17->26: NUM>

我的问题是,如何使用较新版本的 Lucene 库实现旧的 StandardAnalyzer 行为?是否有一些标准的 TokenFilters 可以帮助我实现这一点,还是我需要实现自定义过滤器?

【问题讨论】:

    标签: lucene analyzer


    【解决方案1】:

    参见 StandardAnalyzer 的 javadocs:从 3.1 开始,StandardTokenizer 实现了 Unicode 文本分割...。 ClassicTokenizer 和 ClassicAnalyzer 是 StandardTokenizer 和 StandardAnalyzer 的 3.1 之前的实现。

    或者,您可以将 LUCENE_30 版本传递给 StandardAnalyzer,您还可以获得以前的行为。这就是这些版本常量的目的,以便现有用户的行为保持一致,并且您可以决定何时升级您的应用以更改行为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-24
      • 1970-01-01
      相关资源
      最近更新 更多