7 lines
29 KiB
JavaScript
7 lines
29 KiB
JavaScript
|
/**
|
||
|
* lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.1.5
|
||
|
* Copyright (C) 2017 Oliver Nightingale
|
||
|
* @license MIT
|
||
|
*/
|
||
|
!function () { var e = function (t) { var r = new e.Builder; return r.pipeline.add(e.trimmer, e.stopWordFilter, e.stemmer), r.searchPipeline.add(e.stemmer), t.call(r, r), r.build() }; e.version = "2.1.5", e.utils = {}, e.utils.warn = function (e) { return function (t) { e.console && console.warn && console.warn(t) } }(this), e.utils.asString = function (e) { return void 0 === e || null === e ? "" : e.toString() }, e.FieldRef = function (e, t, r) { this.docRef = e, this.fieldName = t, this._stringValue = r }, e.FieldRef.joiner = "/", e.FieldRef.fromString = function (t) { var r = t.indexOf(e.FieldRef.joiner); if (-1 === r) throw "malformed field ref string"; var i = t.slice(0, r), n = t.slice(r + 1); return new e.FieldRef(n, i, t) }, e.FieldRef.prototype.toString = function () { return void 0 == this._stringValue && (this._stringValue = this.fieldName + e.FieldRef.joiner + this.docRef), this._stringValue }, e.idf = function (e, t) { var r = 0; for (var i in e) "_index" != i && (r += Object.keys(e[i]).length); var n = (t - r + .5) / (r + .5); return Math.log(1 + Math.abs(n)) }, e.Token = function (e, t) { this.str = e || "", this.metadata = t || {} }, e.Token.prototype.toString = function () { return this.str }, e.Token.prototype.update = function (e) { return this.str = e(this.str, this.metadata), this }, e.Token.prototype.clone = function (t) { return t = t || function (e) { return e }, new e.Token(t(this.str, this.metadata), this.metadata) }, e.tokenizer = function (t) { if (null == t || void 0 == t) return []; if (Array.isArray(t)) return t.map(function (t) { return new e.Token(e.utils.asString(t).toLowerCase()) }); for (var r = t.toString().trim().toLowerCase(), i = r.length, n = [], s = 0, o = 0; i >= s; s++) { var a = r.charAt(s), u = s - o; (a.match(e.tokenizer.separator) || s == i) && (u > 0 && n.push(new e.Token(r.slice(o, s), { position: [o, u], index: n.length })), o = s + 1) } return n }, e.tokenizer.separator = /[\s\-]+/, e.Pipeline = function () { this._stack = [] }, e.Pipeline.registeredFunctions = Object.create(null), e.Pipeline.registerFunction = function (t, r) { r in this.registeredFunctions && e.utils.warn("Overwriting existing registered function: " + r), t.label = r, e.Pipeline.registeredFunctions[t.label] = t }, e.Pipeline.warnIfFunctionNotRegistered = function (t) { var r = t.label && t.label in this.registeredFunctions; r || e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n", t) }, e.Pipeline.load = function (t) { var r = new e.Pipeline; return t.forEach(function (t) { var i = e.Pipeline.registeredFunctions[t]; if (!i) throw new Error("Cannot load unregistered function: " + t); r.add(i) }), r }, e.Pipeline.prototype.add = function () { var t = Array.prototype.slice.call(arguments); t.forEach(function (t) { e.Pipeline.warnIfFunctionNotRegistered(t), this._stack.push(t) }, this) }, e.Pipeline.prototype.after = function (t, r) { e.Pipeline.warnIfFunctionNotRegistered(r); var i = this._stack.indexOf(t); if (-1 == i) throw new Error("Cannot find existingFn"); i += 1, this._stack.splice(i, 0, r) }, e.Pipeline.prototype.before = function (t, r) { e.Pipeline.warnIfFunctionNotRegistered(r); var i = this._stack.indexOf(t); if (-1 == i) throw new Error("Cannot find existingFn"); this._stack.splice(i, 0, r) }, e.Pipeline.prototype.remove = function (e) { var t = this._stack.indexOf(e); -1 != t && this._stack.splice(t, 1) }, e.Pipeline.prototype.run = function (e) { for (var t = this._stack.length, r = 0; t > r; r++) { var i = this._stack[r]; e = e.reduce(function (t, r, n) { var s = i(r, n, e); return void 0 === s || "" === s ? t : t.concat(s) }, []) } return e }, e.Pipeline.prototype.runString = function (t) { var r = new e.Token(t); return this.run([r]).map(function (e) { return e.toString() }) }, e.Pipeline.prototype.reset = function () { this._stack = [] }, e.Pipeline.prototype.toJSON = function () { return this._stack.map(function (t) { return e.Pipeline.warnIfFunctionNotRegistered(t), t.label }) }, e.Vector = function (e) { this._magnitude = 0
|