Path: blob/main/docs/_static/language_data.js
798 views
/*1* This script contains the language-specific data used by searchtools.js,2* namely the list of stopwords, stemmer, scorer and splitter.3*/4var 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"];5/* Non-minified version is copied as a separate JS file, if available */6/**7* Porter Stemmer8*/9var Stemmer = function() {10var step2list = {11ational: 'ate',12tional: 'tion',13enci: 'ence',14anci: 'ance',15izer: 'ize',16bli: 'ble',17alli: 'al',18entli: 'ent',19eli: 'e',20ousli: 'ous',21ization: 'ize',22ation: 'ate',23ator: 'ate',24alism: 'al',25iveness: 'ive',26fulness: 'ful',27ousness: 'ous',28aliti: 'al',29iviti: 'ive',30biliti: 'ble',31logi: 'log'32};33var step3list = {34icate: 'ic',35ative: '',36alize: 'al',37iciti: 'ic',38ical: 'ic',39ful: '',40ness: ''41};42var c = "[^aeiou]"; // consonant43var v = "[aeiouy]"; // vowel44var C = c + "[^aeiouy]*"; // consonant sequence45var V = v + "[aeiou]*"; // vowel sequence46var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>047var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=148var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>149var s_v = "^(" + C + ")?" + v; // vowel in stem50this.stemWord = function (w) {51var stem;52var suffix;53var firstch;54var origword = w;55if (w.length < 3)56return w;57var re;58var re2;59var re3;60var re4;61firstch = w.substr(0,1);62if (firstch == "y")63w = firstch.toUpperCase() + w.substr(1);64// Step 1a65re = /^(.+?)(ss|i)es$/;66re2 = /^(.+?)([^s])s$/;67if (re.test(w))68w = w.replace(re,"$1$2");69else if (re2.test(w))70w = w.replace(re2,"$1$2");71// Step 1b72re = /^(.+?)eed$/;73re2 = /^(.+?)(ed|ing)$/;74if (re.test(w)) {75var fp = re.exec(w);76re = new RegExp(mgr0);77if (re.test(fp[1])) {78re = /.$/;79w = w.replace(re,"");80}81}82else if (re2.test(w)) {83var fp = re2.exec(w);84stem = fp[1];85re2 = new RegExp(s_v);86if (re2.test(stem)) {87w = stem;88re2 = /(at|bl|iz)$/;89re3 = new RegExp("([^aeiouylsz])\\1$");90re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");91if (re2.test(w))92w = w + "e";93else if (re3.test(w)) {94re = /.$/;95w = w.replace(re,"");96}97else if (re4.test(w))98w = w + "e";99}100}101// Step 1c102re = /^(.+?)y$/;103if (re.test(w)) {104var fp = re.exec(w);105stem = fp[1];106re = new RegExp(s_v);107if (re.test(stem))108w = stem + "i";109}110// Step 2111re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;112if (re.test(w)) {113var fp = re.exec(w);114stem = fp[1];115suffix = fp[2];116re = new RegExp(mgr0);117if (re.test(stem))118w = stem + step2list[suffix];119}120// Step 3121re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;122if (re.test(w)) {123var fp = re.exec(w);124stem = fp[1];125suffix = fp[2];126re = new RegExp(mgr0);127if (re.test(stem))128w = stem + step3list[suffix];129}130// Step 4131re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;132re2 = /^(.+?)(s|t)(ion)$/;133if (re.test(w)) {134var fp = re.exec(w);135stem = fp[1];136re = new RegExp(mgr1);137if (re.test(stem))138w = stem;139}140else if (re2.test(w)) {141var fp = re2.exec(w);142stem = fp[1] + fp[2];143re2 = new RegExp(mgr1);144if (re2.test(stem))145w = stem;146}147// Step 5148re = /^(.+?)e$/;149if (re.test(w)) {150var fp = re.exec(w);151stem = fp[1];152re = new RegExp(mgr1);153re2 = new RegExp(meq1);154re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");155if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))156w = stem;157}158re = /ll$/;159re2 = new RegExp(mgr1);160if (re.test(w) && re2.test(w)) {161re = /.$/;162w = w.replace(re,"");163}164// and turn initial Y back to y165if (firstch == "y")166w = firstch.toLowerCase() + w.substr(1);167return w;168}169}170171172