d2b4ee91b0da7308cf5693804779c7b18c26252a
[m6w6/libmemcached] / _static / language_data.js
1 /*
2 * language_data.js
3 * ~~~~~~~~~~~~~~~~
4 *
5 * This script contains the language-specific data used by searchtools.js,
6 * namely the list of stopwords, stemmer, scorer and splitter.
7 *
8 * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS.
9 * :license: BSD, see LICENSE for details.
10 *
11 */
12
13 var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
14
15
16 /* Non-minified version JS is _stemmer.js if file is provided */
17 /**
18 * Porter Stemmer
19 */
20 var Stemmer = function() {
21
22 var step2list = {
23 ational: 'ate',
24 tional: 'tion',
25 enci: 'ence',
26 anci: 'ance',
27 izer: 'ize',
28 bli: 'ble',
29 alli: 'al',
30 entli: 'ent',
31 eli: 'e',
32 ousli: 'ous',
33 ization: 'ize',
34 ation: 'ate',
35 ator: 'ate',
36 alism: 'al',
37 iveness: 'ive',
38 fulness: 'ful',
39 ousness: 'ous',
40 aliti: 'al',
41 iviti: 'ive',
42 biliti: 'ble',
43 logi: 'log'
44 };
45
46 var step3list = {
47 icate: 'ic',
48 ative: '',
49 alize: 'al',
50 iciti: 'ic',
51 ical: 'ic',
52 ful: '',
53 ness: ''
54 };
55
56 var c = "[^aeiou]"; // consonant
57 var v = "[aeiouy]"; // vowel
58 var C = c + "[^aeiouy]*"; // consonant sequence
59 var V = v + "[aeiou]*"; // vowel sequence
60
61 var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0
62 var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1
63 var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1
64 var s_v = "^(" + C + ")?" + v; // vowel in stem
65
66 this.stemWord = function (w) {
67 var stem;
68 var suffix;
69 var firstch;
70 var origword = w;
71
72 if (w.length < 3)
73 return w;
74
75 var re;
76 var re2;
77 var re3;
78 var re4;
79
80 firstch = w.substr(0,1);
81 if (firstch == "y")
82 w = firstch.toUpperCase() + w.substr(1);
83
84 // Step 1a
85 re = /^(.+?)(ss|i)es$/;
86 re2 = /^(.+?)([^s])s$/;
87
88 if (re.test(w))
89 w = w.replace(re,"$1$2");
90 else if (re2.test(w))
91 w = w.replace(re2,"$1$2");
92
93 // Step 1b
94 re = /^(.+?)eed$/;
95 re2 = /^(.+?)(ed|ing)$/;
96 if (re.test(w)) {
97 var fp = re.exec(w);
98 re = new RegExp(mgr0);
99 if (re.test(fp[1])) {
100 re = /.$/;
101 w = w.replace(re,"");
102 }
103 }
104 else if (re2.test(w)) {
105 var fp = re2.exec(w);
106 stem = fp[1];
107 re2 = new RegExp(s_v);
108 if (re2.test(stem)) {
109 w = stem;
110 re2 = /(at|bl|iz)$/;
111 re3 = new RegExp("([^aeiouylsz])\\1$");
112 re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
113 if (re2.test(w))
114 w = w + "e";
115 else if (re3.test(w)) {
116 re = /.$/;
117 w = w.replace(re,"");
118 }
119 else if (re4.test(w))
120 w = w + "e";
121 }
122 }
123
124 // Step 1c
125 re = /^(.+?)y$/;
126 if (re.test(w)) {
127 var fp = re.exec(w);
128 stem = fp[1];
129 re = new RegExp(s_v);
130 if (re.test(stem))
131 w = stem + "i";
132 }
133
134 // Step 2
135 re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
136 if (re.test(w)) {
137 var fp = re.exec(w);
138 stem = fp[1];
139 suffix = fp[2];
140 re = new RegExp(mgr0);
141 if (re.test(stem))
142 w = stem + step2list[suffix];
143 }
144
145 // Step 3
146 re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
147 if (re.test(w)) {
148 var fp = re.exec(w);
149 stem = fp[1];
150 suffix = fp[2];
151 re = new RegExp(mgr0);
152 if (re.test(stem))
153 w = stem + step3list[suffix];
154 }
155
156 // Step 4
157 re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
158 re2 = /^(.+?)(s|t)(ion)$/;
159 if (re.test(w)) {
160 var fp = re.exec(w);
161 stem = fp[1];
162 re = new RegExp(mgr1);
163 if (re.test(stem))
164 w = stem;
165 }
166 else if (re2.test(w)) {
167 var fp = re2.exec(w);
168 stem = fp[1] + fp[2];
169 re2 = new RegExp(mgr1);
170 if (re2.test(stem))
171 w = stem;
172 }
173
174 // Step 5
175 re = /^(.+?)e$/;
176 if (re.test(w)) {
177 var fp = re.exec(w);
178 stem = fp[1];
179 re = new RegExp(mgr1);
180 re2 = new RegExp(meq1);
181 re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
182 if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
183 w = stem;
184 }
185 re = /ll$/;
186 re2 = new RegExp(mgr1);
187 if (re.test(w) && re2.test(w)) {
188 re = /.$/;
189 w = w.replace(re,"");
190 }
191
192 // and turn initial Y back to y
193 if (firstch == "y")
194 w = firstch.toLowerCase() + w.substr(1);
195 return w;
196 }
197 }
198
199
200
201
202
203 var splitChars = (function() {
204 var result = {};
205 var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648,
206 1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702,
207 2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971,
208 2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345,
209 3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761,
210 3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823,
211 4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125,
212 8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695,
213 11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587,
214 43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141];
215 var i, j, start, end;
216 for (i = 0; i < singles.length; i++) {
217 result[singles[i]] = true;
218 }
219 var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709],
220 [722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161],
221 [1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568],
222 [1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807],
223 [1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047],
224 [2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383],
225 [2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450],
226 [2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547],
227 [2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673],
228 [2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820],
229 [2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946],
230 [2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023],
231 [3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173],
232 [3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332],
233 [3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481],
234 [3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718],
235 [3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791],
236 [3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095],
237 [4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205],
238 [4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687],
239 [4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968],
240 [4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869],
241 [5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102],
242 [6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271],
243 [6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592],
244 [6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822],
245 [6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167],
246 [7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959],
247 [7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143],
248 [8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318],
249 [8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483],
250 [8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101],
251 [10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567],
252 [11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292],
253 [12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444],
254 [12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783],
255 [12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311],
256 [19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511],
257 [42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774],
258 [42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071],
259 [43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263],
260 [43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519],
261 [43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647],
262 [43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967],
263 [44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295],
264 [57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274],
265 [64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007],
266 [65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381],
267 [65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]];
268 for (i = 0; i < ranges.length; i++) {
269 start = ranges[i][0];
270 end = ranges[i][1];
271 for (j = start; j <= end; j++) {
272 result[j] = true;
273 }
274 }
275 return result;
276 })();
277
278 function splitQuery(query) {
279 var result = [];
280 var start = -1;
281 for (var i = 0; i < query.length; i++) {
282 if (splitChars[query.charCodeAt(i)]) {
283 if (start !== -1) {
284 result.push(query.slice(start, i));
285 start = -1;
286 }
287 } else if (start === -1) {
288 start = i;
289 }
290 }
291 if (start !== -1) {
292 result.push(query.slice(start));
293 }
294 return result;
295 }
296
297