1 package org.apache.lucene.analysis; 2 3 18 19 26 public class ISOLatin1AccentFilter extends TokenFilter { 27 public ISOLatin1AccentFilter(TokenStream input) { 28 super(input); 29 } 30 31 public final Token next() throws java.io.IOException { 32 final Token t = input.next(); 33 if (t == null) 34 return null; 35 return new Token(removeAccents(t.termText()), t.startOffset(), t.endOffset(), t.type()); 37 } 38 39 42 public final static String removeAccents(String input) { 43 final StringBuffer output = new StringBuffer (); 44 for (int i = 0; i < input.length(); i++) { 45 switch (input.charAt(i)) { 46 case '\u00C0' : case '\u00C1' : case '\u00C2' : case '\u00C3' : case '\u00C4' : case '\u00C5' : output.append("A"); 53 break; 54 case '\u00C6' : output.append("AE"); 56 break; 57 case '\u00C7' : output.append("C"); 59 break; 60 case '\u00C8' : case '\u00C9' : case '\u00CA' : case '\u00CB' : output.append("E"); 65 break; 66 case '\u00CC' : case '\u00CD' : case '\u00CE' : case '\u00CF' : output.append("I"); 71 break; 72 case '\u00D0' : output.append("D"); 74 break; 75 case '\u00D1' : output.append("N"); 77 break; 78 case '\u00D2' : case '\u00D3' : case '\u00D4' : case '\u00D5' : case '\u00D6' : case '\u00D8' : output.append("O"); 85 break; 86 case '\u0152' : output.append("OE"); 88 break; 89 case '\u00DE' : output.append("TH"); 91 break; 92 case '\u00D9' : case '\u00DA' : case '\u00DB' : case '\u00DC' : output.append("U"); 97 break; 98 case '\u00DD' : case '\u0178' : output.append("Y"); 101 break; 102 case '\u00E0' : case '\u00E1' : case '\u00E2' : case '\u00E3' : case '\u00E4' : case '\u00E5' : output.append("a"); 109 break; 110 case '\u00E6' : output.append("ae"); 112 break; 113 case '\u00E7' : output.append("c"); 115 break; 116 case '\u00E8' : case '\u00E9' : case '\u00EA' : case '\u00EB' : output.append("e"); 121 break; 122 case '\u00EC' : case '\u00ED' : case '\u00EE' : case '\u00EF' : output.append("i"); 127 break; 128 case '\u00F0' : output.append("d"); 130 break; 131 case '\u00F1' : output.append("n"); 133 break; 134 case '\u00F2' : case '\u00F3' : case '\u00F4' : case '\u00F5' : case '\u00F6' : case '\u00F8' : output.append("o"); 141 break; 142 case '\u0153' : output.append("oe"); 144 break; 145 case '\u00DF' : output.append("ss"); 147 break; 148 case '\u00FE' : output.append("th"); 150 break; 151 case '\u00F9' : case '\u00FA' : case '\u00FB' : case '\u00FC' : output.append("u"); 156 break; 157 case '\u00FD' : case '\u00FF' : output.append("y"); 160 break; 161 default : 162 output.append(input.charAt(i)); 163 break; 164 } 165 } 166 return output.toString(); 167 } 168 } | Popular Tags |