2014-09-03 18 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