You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.
# include "tokenizer.h"
# include <algorithm>
# include <vector>
# include <string>
# include <cassert>
using std : : string ;
using std : : vector ;
namespace {
vector < string > split ( const char * str , const char delim ) {
assert ( str ) ;
vector < string > res ;
while ( * str = = delim ) + + str ;
while ( * str ) {
const char * start = str + + ;
while ( * str & & * str ! = delim ) + + str ;
res . push_back ( string ( start , str ) ) ;
while ( * str = = delim ) + + str ;
}
return res ;
}
class latin1_tokenizer : public indexlib : : detail : : tokenizer {
private :
static const char stop = 46 ; // .
static void normalize ( char & c ) {
const char result [ ] = {
stop , // [ 0 ]
stop , // [ 1 ]
stop , // [ 2 ]
stop , // [ 3 ]
stop , // [ 4 ]
stop , // [ 5 ]
stop , // [ 6 ]
stop , // [ 7 ]
stop , // ^H [ 8 ]
stop , // \t [ 9 ]
stop , // [ 10 ]
stop , // [ 11 ]
stop , // [ 12 ]
stop , // [ 13 ]
stop , // [ 14 ]
stop , // [ 15 ]
stop , // [ 16 ]
stop , // [ 17 ]
stop , // [ 18 ]
stop , // [ 19 ]
stop , // [ 20 ]
stop , // [ 21 ]
stop , // [ 22 ]
stop , // [ 23 ]
stop , // [ 24 ]
stop , // [ 25 ]
stop , // [ 26 ]
stop , // [ 27 ]
stop , // [ 28 ]
stop , // [ 29 ]
stop , // [ 30 ]
stop , // [ 31 ]
stop , // [ 32 ]
stop , // ! [ 33 ]
stop , // " [ 34 ]
stop , // # [ 35 ]
stop , // $ [ 36 ]
stop , // % [ 37 ]
stop , // & [ 38 ]
stop , // ' [ 39 ]
stop , // ( [ 40 ]
stop , // ) [ 41 ]
stop , // * [ 42 ]
stop , // + [ 43 ]
stop , // , [ 44 ]
stop , // - [ 45 ]
stop , // . [ 46 ]
stop , // / [ 47 ]
' 0 ' , // 0 [ 48 ]
' 1 ' , // 1 [ 49 ]
' 2 ' , // 2 [ 50 ]
' 3 ' , // 3 [ 51 ]
' 4 ' , // 4 [ 52 ]
' 5 ' , // 5 [ 53 ]
' 6 ' , // 6 [ 54 ]
' 7 ' , // 7 [ 55 ]
' 8 ' , // 8 [ 56 ]
' 9 ' , // 9 [ 57 ]
stop , // : [ 58 ]
stop , // ; [ 59 ]
stop , // < [ 60 ]
stop , // = [ 61 ]
stop , // > [ 62 ]
stop , // ? [ 63 ]
stop , // @ [ 64 ]
' A ' , // A [ 65 ]
' B ' , // B [ 66 ]
' C ' , // C [ 67 ]
' D ' , // D [ 68 ]
' E ' , // E [ 69 ]
' F ' , // F [ 70 ]
' G ' , // G [ 71 ]
' H ' , // H [ 72 ]
' I ' , // I [ 73 ]
' J ' , // J [ 74 ]
' K ' , // K [ 75 ]
' L ' , // L [ 76 ]
' M ' , // M [ 77 ]
' N ' , // N [ 78 ]
' O ' , // O [ 79 ]
' P ' , // P [ 80 ]
' Q ' , // Q [ 81 ]
' R ' , // R [ 82 ]
' S ' , // S [ 83 ]
' T ' , // T [ 84 ]
' U ' , // U [ 85 ]
' V ' , // V [ 86 ]
' W ' , // W [ 87 ]
' X ' , // X [ 88 ]
' Y ' , // Y [ 89 ]
' Z ' , // Z [ 90 ]
stop , // [ [ 91 ]
stop , // \ [ 92 ]
stop , // ] [ 93 ]
stop , // ^ [ 94 ]
stop , // _ [ 95 ]
stop , // ` [ 96 ]
' A ' , // a [ 97 ]
' B ' , // b [ 98 ]
' C ' , // c [ 99 ]
' D ' , // d [ 100 ]
' E ' , // e [ 101 ]
' F ' , // f [ 102 ]
' G ' , // g [ 103 ]
' H ' , // h [ 104 ]
' I ' , // i [ 105 ]
' J ' , // j [ 106 ]
' K ' , // k [ 107 ]
' L ' , // l [ 108 ]
' M ' , // m [ 109 ]
' N ' , // n [ 110 ]
' O ' , // o [ 111 ]
' P ' , // p [ 112 ]
' Q ' , // q [ 113 ]
' R ' , // r [ 114 ]
' S ' , // s [ 115 ]
' T ' , // t [ 116 ]
' U ' , // u [ 117 ]
' V ' , // v [ 118 ]
' W ' , // w [ 119 ]
' X ' , // x [ 120 ]
' Y ' , // y [ 121 ]
' Z ' , // z [ 122 ]
stop , // { [ 123 ]
stop , // | [ 124 ]
stop , // } [ 125 ]
stop , // ~ [ 126 ]
stop , // [ 127 ]
stop , // <20> [ 128 ]
stop , // <20> [ 129 ]
stop , // <20> [ 130 ]
stop , // <20> [ 131 ]
stop , // <20> [ 132 ]
stop , // <20> [ 133 ]
stop , // <20> [ 134 ]
stop , // <20> [ 135 ]
stop , // <20> [ 136 ]
stop , // <20> [ 137 ]
stop , // <20> [ 138 ]
stop , // <20> [ 139 ]
stop , // <20> [ 140 ]
stop , // <20> [ 141 ]
stop , // <20> [ 142 ]
stop , // <20> [ 143 ]
stop , // <20> [ 144 ]
stop , // <20> [ 145 ]
stop , // <20> [ 146 ]
stop , // <20> [ 147 ]
stop , // <20> [ 148 ]
stop , // <20> [ 149 ]
stop , // <20> [ 150 ]
stop , // <20> [ 151 ]
stop , // <20> [ 152 ]
stop , // <20> [ 153 ]
stop , // <20> [ 154 ]
stop , // <20> [ 155 ]
stop , // <20> [ 156 ]
stop , // <20> [ 157 ]
stop , // <20> [ 158 ]
stop , // <20> [ 159 ]
stop , // <20> [ 160 ]
stop , // <20> [ 161 ]
stop , // <20> [ 162 ]
stop , // <20> [ 163 ]
stop , // <20> [ 164 ]
stop , // <20> [ 165 ]
stop , // <20> [ 166 ]
stop , // <20> [ 167 ]
stop , // <20> [ 168 ]
stop , // <20> [ 169 ]
stop , // <20> [ 170 ]
stop , // <20> [ 171 ]
stop , // <20> [ 172 ]
stop , // <20> [ 173 ]
stop , // <20> [ 174 ]
stop , // <20> [ 175 ]
stop , // <20> [ 176 ]
stop , // <20> [ 177 ]
stop , // <20> [ 178 ]
stop , // <20> [ 179 ]
stop , // <20> [ 180 ]
stop , // <20> [ 181 ]
stop , // <20> [ 182 ]
stop , // <20> [ 183 ]
stop , // <20> [ 184 ]
stop , // <20> [ 185 ]
stop , // <20> [ 186 ]
stop , // <20> [ 187 ]
stop , // <20> [ 188 ]
stop , // <20> [ 189 ]
stop , // <20> [ 190 ]
stop , // <20> [ 191 ]
' A ' , // <20> [ 192 ]
' A ' , // <20> [ 193 ]
' A ' , // <20> [ 194 ]
' A ' , // <20> [ 195 ]
' A ' , // <20> [ 196 ]
' A ' , // <20> [ 197 ]
' A ' , // <20> [ 198 ]
' C ' , // <20> [ 199 ]
' E ' , // <20> [ 200 ]
' E ' , // <20> [ 201 ]
' E ' , // <20> [ 202 ]
' E ' , // <20> [ 203 ]
' I ' , // <20> [ 204 ]
' I ' , // <20> [ 205 ]
' I ' , // <20> [ 206 ]
' I ' , // <20> [ 207 ]
' D ' , // <20> [ 208 ]
' N ' , // <20> [ 209 ]
' O ' , // <20> [ 210 ]
' O ' , // <20> [ 211 ]
' O ' , // <20> [ 212 ]
' O ' , // <20> [ 213 ]
' O ' , // <20> [ 214 ]
' X ' , // <20> [ 215 ]
' O ' , // <20> [ 216 ]
' U ' , // <20> [ 217 ]
' U ' , // <20> [ 218 ]
' U ' , // <20> [ 219 ]
' U ' , // <20> [ 220 ]
' Y ' , // <20> [ 221 ]
' T ' , // <20> [ 222 ]
' S ' , // <20> [ 223 ]
' A ' , // <20> [ 224 ]
' A ' , // <20> [ 225 ]
' A ' , // <20> [ 226 ]
' A ' , // <20> [ 227 ]
' A ' , // <20> [ 228 ]
' A ' , // <20> [ 229 ]
' A ' , // <20> [ 230 ]
' C ' , // <20> [ 231 ]
' E ' , // <20> [ 232 ]
' E ' , // <20> [ 233 ]
' E ' , // <20> [ 234 ]
' E ' , // <20> [ 235 ]
' I ' , // <20> [ 236 ]
' I ' , // <20> [ 237 ]
' I ' , // <20> [ 238 ]
' I ' , // <20> [ 239 ]
stop , // <20> [ 240 ]
' N ' , // <20> [ 241 ]
' O ' , // <20> [ 242 ]
' O ' , // <20> [ 243 ]
' O ' , // <20> [ 244 ]
' O ' , // <20> [ 245 ]
' O ' , // <20> [ 246 ]
stop , // <20> [ 247 ]
' O ' , // <20> [ 248 ]
' U ' , // <20> [ 249 ]
' U ' , // <20> [ 250 ]
' U ' , // <20> [ 251 ]
' U ' , // <20> [ 252 ]
' Y ' , // <20> [ 253 ]
' T ' , // <20> [ 254 ]
' Y ' // <20> [ 255 ]
} ;
c = result [ static_cast < unsigned char > ( c ) ] ;
}
std : : vector < std : : string > do_string_to_words ( const char * str ) {
string complete = str ;
std : : for_each ( complete . begin ( ) , complete . end ( ) , normalize ) ;
return split ( complete . c_str ( ) , stop ) ;
}
} ;
}
std : : unique_ptr < indexlib : : detail : : tokenizer > indexlib : : detail : : get_tokenizer ( std : : string name ) {
if ( name = = " latin-1:european " ) return std : : unique_ptr < indexlib : : detail : : tokenizer > ( new latin1_tokenizer ) ;
return std : : unique_ptr < indexlib : : detail : : tokenizer > ( ) ;
}