Update lunr.js to version 0.5.7

This commit is contained in:
Rouven Weßling 2015-02-12 21:48:59 +01:00 committed by Robert Lord
parent 3a236aa81e
commit b1e0ff5d94

View file

@ -1,5 +1,5 @@
/** /**
* lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 0.5.2 * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 0.5.7
* Copyright (C) 2014 Oliver Nightingale * Copyright (C) 2014 Oliver Nightingale
* MIT Licensed * MIT Licensed
* @license * @license
@ -56,7 +56,7 @@ var lunr = function (config) {
return idx return idx
} }
lunr.version = "0.5.2" lunr.version = "0.5.7"
/*! /*!
* lunr.utils * lunr.utils
* Copyright (C) 2014 Oliver Nightingale * Copyright (C) 2014 Oliver Nightingale
@ -190,7 +190,10 @@ lunr.tokenizer = function (obj) {
} }
return str return str
.split(/\s+/) .split(/(?:\s+|\-)/)
.filter(function (token) {
return !!token
})
.map(function (token) { .map(function (token) {
return token.toLowerCase() return token.toLowerCase()
}) })
@ -1240,8 +1243,8 @@ lunr.Store.load = function (serialisedData) {
* @memberOf Store * @memberOf Store
*/ */
lunr.Store.prototype.set = function (id, tokens) { lunr.Store.prototype.set = function (id, tokens) {
if (!this.has(id)) this.length++
this.store[id] = tokens this.store[id] = tokens
this.length = Object.keys(this.store).length
} }
/** /**
@ -1352,7 +1355,33 @@ lunr.stemmer = (function(){
mgr1 = "^(" + C + ")?" + V + C + V + C, // [C]VCVC... is m>1 mgr1 = "^(" + C + ")?" + V + C + V + C, // [C]VCVC... is m>1
s_v = "^(" + C + ")?" + v; // vowel in stem s_v = "^(" + C + ")?" + v; // vowel in stem
return function (w) { var re_mgr0 = new RegExp(mgr0);
var re_mgr1 = new RegExp(mgr1);
var re_meq1 = new RegExp(meq1);
var re_s_v = new RegExp(s_v);
var re_1a = /^(.+?)(ss|i)es$/;
var re2_1a = /^(.+?)([^s])s$/;
var re_1b = /^(.+?)eed$/;
var re2_1b = /^(.+?)(ed|ing)$/;
var re_1b_2 = /.$/;
var re2_1b_2 = /(at|bl|iz)$/;
var re3_1b_2 = new RegExp("([^aeiouylsz])\\1$");
var re4_1b_2 = new RegExp("^" + C + v + "[^aeiouwxy]$");
var re_1c = /^(.+?[^aeiou])y$/;
var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
var re2_4 = /^(.+?)(s|t)(ion)$/;
var re_5 = /^(.+?)e$/;
var re_5_1 = /ll$/;
var re3_5 = new RegExp("^" + C + v + "[^aeiouwxy]$");
var porterStemmer = function porterStemmer(w) {
var stem, var stem,
suffix, suffix,
firstch, firstch,
@ -1369,106 +1398,105 @@ lunr.stemmer = (function(){
} }
// Step 1a // Step 1a
re = /^(.+?)(ss|i)es$/; re = re_1a
re2 = /^(.+?)([^s])s$/; re2 = re2_1a;
if (re.test(w)) { w = w.replace(re,"$1$2"); } if (re.test(w)) { w = w.replace(re,"$1$2"); }
else if (re2.test(w)) { w = w.replace(re2,"$1$2"); } else if (re2.test(w)) { w = w.replace(re2,"$1$2"); }
// Step 1b // Step 1b
re = /^(.+?)eed$/; re = re_1b;
re2 = /^(.+?)(ed|ing)$/; re2 = re2_1b;
if (re.test(w)) { if (re.test(w)) {
var fp = re.exec(w); var fp = re.exec(w);
re = new RegExp(mgr0); re = re_mgr0;
if (re.test(fp[1])) { if (re.test(fp[1])) {
re = /.$/; re = re_1b_2;
w = w.replace(re,""); w = w.replace(re,"");
} }
} else if (re2.test(w)) { } else if (re2.test(w)) {
var fp = re2.exec(w); var fp = re2.exec(w);
stem = fp[1]; stem = fp[1];
re2 = new RegExp(s_v); re2 = re_s_v;
if (re2.test(stem)) { if (re2.test(stem)) {
w = stem; w = stem;
re2 = /(at|bl|iz)$/; re2 = re2_1b_2;
re3 = new RegExp("([^aeiouylsz])\\1$"); re3 = re3_1b_2;
re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); re4 = re4_1b_2;
if (re2.test(w)) { w = w + "e"; } if (re2.test(w)) { w = w + "e"; }
else if (re3.test(w)) { re = /.$/; w = w.replace(re,""); } else if (re3.test(w)) { re = re_1b_2; w = w.replace(re,""); }
else if (re4.test(w)) { w = w + "e"; } else if (re4.test(w)) { w = w + "e"; }
} }
} }
// Step 1c // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say)
re = /^(.+?)y$/; re = re_1c;
if (re.test(w)) { if (re.test(w)) {
var fp = re.exec(w); var fp = re.exec(w);
stem = fp[1]; stem = fp[1];
re = new RegExp(s_v); w = stem + "i";
if (re.test(stem)) { w = stem + "i"; }
} }
// Step 2 // Step 2
re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; re = re_2;
if (re.test(w)) { if (re.test(w)) {
var fp = re.exec(w); var fp = re.exec(w);
stem = fp[1]; stem = fp[1];
suffix = fp[2]; suffix = fp[2];
re = new RegExp(mgr0); re = re_mgr0;
if (re.test(stem)) { if (re.test(stem)) {
w = stem + step2list[suffix]; w = stem + step2list[suffix];
} }
} }
// Step 3 // Step 3
re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; re = re_3;
if (re.test(w)) { if (re.test(w)) {
var fp = re.exec(w); var fp = re.exec(w);
stem = fp[1]; stem = fp[1];
suffix = fp[2]; suffix = fp[2];
re = new RegExp(mgr0); re = re_mgr0;
if (re.test(stem)) { if (re.test(stem)) {
w = stem + step3list[suffix]; w = stem + step3list[suffix];
} }
} }
// Step 4 // Step 4
re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; re = re_4;
re2 = /^(.+?)(s|t)(ion)$/; re2 = re2_4;
if (re.test(w)) { if (re.test(w)) {
var fp = re.exec(w); var fp = re.exec(w);
stem = fp[1]; stem = fp[1];
re = new RegExp(mgr1); re = re_mgr1;
if (re.test(stem)) { if (re.test(stem)) {
w = stem; w = stem;
} }
} else if (re2.test(w)) { } else if (re2.test(w)) {
var fp = re2.exec(w); var fp = re2.exec(w);
stem = fp[1] + fp[2]; stem = fp[1] + fp[2];
re2 = new RegExp(mgr1); re2 = re_mgr1;
if (re2.test(stem)) { if (re2.test(stem)) {
w = stem; w = stem;
} }
} }
// Step 5 // Step 5
re = /^(.+?)e$/; re = re_5;
if (re.test(w)) { if (re.test(w)) {
var fp = re.exec(w); var fp = re.exec(w);
stem = fp[1]; stem = fp[1];
re = new RegExp(mgr1); re = re_mgr1;
re2 = new RegExp(meq1); re2 = re_meq1;
re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); re3 = re3_5;
if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) { if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) {
w = stem; w = stem;
} }
} }
re = /ll$/; re = re_5_1;
re2 = new RegExp(mgr1); re2 = re_mgr1;
if (re.test(w) && re2.test(w)) { if (re.test(w) && re2.test(w)) {
re = /.$/; re = re_1b_2;
w = w.replace(re,""); w = w.replace(re,"");
} }
@ -1479,7 +1507,9 @@ lunr.stemmer = (function(){
} }
return w; return w;
} };
return porterStemmer;
})(); })();
lunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer') lunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer')
@ -1851,7 +1881,7 @@ lunr.TokenStore.prototype.toJSON = function () {
/** /**
* export the module via AMD, CommonnJS or as a browser global * export the module via AMD, CommonJS or as a browser global
* Export code from https://github.com/umdjs/umd/blob/master/returnExports.js * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js
*/ */
;(function (root, factory) { ;(function (root, factory) {