2014-09-03 17 views
1

我使用Lucene有以下过滤器链:如何标准化Lucene中的未知字符?

StandardFilter > LowerCaseFilter > GermanNormalizationFilter > ASCIIFoldingFilter

哪些额外的过滤器我必须使用任何未知的字符转换为拉丁字母? 例如,像Кадашевская这样的俄语字符串,我希望它们或者被转换为拉丁字母等价物,或者将它们移除。

哪个过滤器适用于此目的?

目前,过滤器链标准化的字符串:我相信ICUTransformFilter将是一个不错的选择???????????

回答

2

TokenFilter filter = new ICUTransformFilter(
    previousFilter, 
    Transliterator.getInstance("Cyrillic-Latin") 
); 

我认为这是相当清楚的是转化每一个可能的角色的想法成一个等效的拉丁字符是废话(什么是拉丁等同于锁?或♞?)。但是,您也可以连续使用多个转换打尽可能多的,如也将希腊拉丁,和片假名拉丁语:

TokenFilter filter = new ICUTransformFilter(
    previousFilter, 
    Transliterator.getInstance("Cyrillic-Latin;Greek-Latin;Katakana-Latin") 
); 

您需要包括“的Lucene分析仪,ICU-4.XX罐“为过滤器,以及download and include ICU4J