我最近注意到 Lucene StandardAnalyzer 的行为自 3.1 版以来发生了一些变化。具体来说,3.0 和之前的版本将电子邮件、IP 地址、公司名称等识别为单独的词汇类型,而更高版本则不识别。
例如,对于输入文本:“ example@mail.com 127.0.0.1 H&M ”,3.0 分析器将识别以下类型:
1:example@mail.com:0->16:<电子邮件>
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:<数字>
我的问题是,如何使用新版本的 Lucene 库实现旧的 StandardAnalyzer 行为?是否有一些标准的 TokenFilters 可以帮助我实现这一点,或者我是否需要实现自定义过滤器?