我正在使用带有以下过滤器链的lucene:
StandardFilter > LowerCaseFilter > GermanNormalizationFilter > ASCIIFoldingFilter
我必须使用哪个额外的过滤器将任何未知字符转换为拉丁字母?
例如像Кадашевская
这样的俄语字符串,我希望它们可以转换为拉丁字母等价物,或者将它们删除。
哪种过滤器符合此目的?
目前,过滤器链将字符串规范化为:???????????
答案 0 :(得分:3)
我相信ICUTransformFilter
将是一个不错的选择:
TokenFilter filter = new ICUTransformFilter(
previousFilter,
Transliterator.getInstance("Cyrillic-Latin")
);
我认为将每个可能的角色转换为等同的拉丁角色的想法是无稽之谈(拉的等同于什么?或者♞?)。但是,您也可以将多个转换链接在一起,以尽可能多地进行转换,例如将希腊语转换为拉丁语,将片假名转换为拉丁语:
TokenFilter filter = new ICUTransformFilter(
previousFilter,
Transliterator.getInstance("Cyrillic-Latin;Greek-Latin;Katakana-Latin")
);
您需要为过滤器添加“lucene-analyzers-icu-4.x.x.jar”,以及download and include ICU4J