<分区>
谁能告诉我一个像这样规范化标记的过滤器?
L.A. Reid -> LA Reid
O'Callaghan -> OCallaghan
搜索 LA Reid
将匹配 L.A.里德
。
<分区>
谁能告诉我一个像这样规范化标记的过滤器?
L.A. Reid -> LA Reid
O'Callaghan -> OCallaghan
搜索 LA Reid
将匹配 L.A.里德
。
最佳答案
您不能在 StandardAnalyzer 的输出上使用过滤器,因为 StandardAnalyzer 会在您的过滤器有机会组合标记之前去除标点符号。
您可以通过修改标准分析器来创建自己的分析器。 StandardAnalyzer 使用 JFlex创建分词器。源 jflex 文件是 here ,我还没有尝试过,但你可能会改变这一行,
ALetter = ([\p{WB:ALetter}] | {ALetterSupp})
比如,
ALetter = ([\p{WB:ALetter}] | {ALetterSupp} | "." | "'" )
您还需要更改 jflex 文件中的类名和包声明。执行此操作后,使用 jflex 生成新的分析器。
分析器将生成像 L.A.
这样的标记,因此将分析器的输出传递给 TokenFilter。从标记中去除特殊字符,查看 ISOLatin1AccentFilter例如代码。
关于search - 使用什么样的过滤器来匹配像 OCallaghan 和 O'Callaghan 这样的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10887662/