From 6693992d4376ea491f515de1fdfdfcb4c36baa1f Mon Sep 17 00:00:00 2001 From: Thomas Wilkerling Date: Tue, 12 Nov 2019 21:10:45 +0100 Subject: [PATCH] ADD v0.7.0-rev2 (preview) --- .babelrc | 6 +- README.md | 1 + bench/dist/flexsearch.light.js | 23 +- dist/flexsearch.compact.js | 44 +- dist/flexsearch.debug.js | 592 +++++++++++++++++--------- dist/flexsearch.es5.js | 60 +-- dist/flexsearch.light.js | 24 +- dist/flexsearch.min.js | 59 +-- dist/flexsearch.node.js | 55 +-- dist/flexsearch.pre.js | 611 ++++++++++++++------------- dist/lang/arabian/default.min.js | 1 - dist/lang/arabic/default.min.js | 1 + dist/lang/at.min.js | 4 +- dist/lang/cjk/default.min.js | 2 +- dist/lang/cyrillic/default.min.js | 2 +- dist/lang/de.min.js | 4 +- dist/lang/en.min.js | 4 +- dist/lang/latin/advanced.min.js | 2 +- dist/lang/latin/balance.min.js | 2 +- dist/lang/latin/default.min.js | 2 +- dist/lang/latin/extra.min.js | 2 +- dist/lang/latin/simple.min.js | 2 +- dist/lang/latin/soundex.min.js | 1 + dist/lang/us.min.js | 4 +- dist/module/bundle.js | 1 - dist/module/common.js | 2 +- dist/module/flexsearch.js | 2 +- dist/module/lang/arabian/default.js | 1 - dist/module/lang/arabian/index.js | 1 - dist/module/lang/arabic/default.js | 1 + dist/module/lang/at.js | 2 +- dist/module/lang/cjk/default.js | 2 +- dist/module/lang/cjk/index.js | 1 - dist/module/lang/cyrillic/default.js | 2 +- dist/module/lang/cyrillic/index.js | 1 - dist/module/lang/de.js | 2 +- dist/module/lang/en.js | 2 +- dist/module/lang/latin/advanced.js | 2 +- dist/module/lang/latin/balance.js | 2 +- dist/module/lang/latin/default.js | 1 + dist/module/lang/latin/extra.js | 2 +- dist/module/lang/latin/icase.js | 1 - dist/module/lang/latin/index.js | 1 - dist/module/lang/latin/simple.js | 2 +- dist/module/lang/latin/soundex.js | 2 +- dist/module/lang/us.js | 2 +- dist/module/profiler.js | 2 +- dist/module/worker.js | 2 +- doc/0.7.0.md | 220 ++++++---- doc/pipeline.svg | 2 +- package.json | 20 +- src/bundle.js | 69 ++- src/common.js | 128 +++++- src/config.js | 16 +- src/export.js | 4 +- src/flexsearch.js | 338 +++++++-------- src/lang/arabian/index.js | 7 - src/lang/arabic/default.js | 25 ++ src/lang/at.js | 9 +- src/lang/cjk/default.js | 26 ++ src/lang/cjk/index.js | 7 - src/lang/cyrillic/default.js | 25 ++ src/lang/cyrillic/index.js | 7 - src/lang/de.js | 9 +- src/lang/en.js | 9 +- src/lang/latin/advanced.js | 40 +- src/lang/latin/balance.js | 28 +- src/lang/latin/default.js | 25 ++ src/lang/latin/extra.js | 60 +-- src/lang/latin/index.js | 17 - src/lang/latin/simple.js | 30 +- src/lang/latin/soundex.js | 104 +++-- src/lang/us.js | 9 +- src/polyfill.js | 2 +- task/build.js | 26 +- 75 files changed, 1681 insertions(+), 1128 deletions(-) delete mode 100644 dist/lang/arabian/default.min.js create mode 100644 dist/lang/arabic/default.min.js create mode 100644 dist/lang/latin/soundex.min.js delete mode 100644 dist/module/bundle.js delete mode 100644 dist/module/lang/arabian/default.js delete mode 100644 dist/module/lang/arabian/index.js create mode 100644 dist/module/lang/arabic/default.js delete mode 100644 dist/module/lang/cjk/index.js delete mode 100644 dist/module/lang/cyrillic/index.js create mode 100644 dist/module/lang/latin/default.js delete mode 100644 dist/module/lang/latin/icase.js delete mode 100644 dist/module/lang/latin/index.js delete mode 100644 src/lang/arabian/index.js create mode 100644 src/lang/arabic/default.js create mode 100644 src/lang/cjk/default.js delete mode 100644 src/lang/cjk/index.js create mode 100644 src/lang/cyrillic/default.js delete mode 100644 src/lang/cyrillic/index.js create mode 100644 src/lang/latin/default.js delete mode 100644 src/lang/latin/index.js diff --git a/.babelrc b/.babelrc index 790c231..903b6ce 100644 --- a/.babelrc +++ b/.babelrc @@ -3,7 +3,8 @@ ["conditional-compile", { "define": { "DEBUG": false, - "PROFILER": true, + "PROFILER": false, + "POLYFILL": true, "SUPPORT_WORKER": true, "SUPPORT_ENCODER": true, "SUPPORT_CACHE": true, @@ -17,7 +18,7 @@ "SUPPORT_PAGINATION": true, "SUPPORT_OPERATOR": true, "SUPPORT_CALLBACK": true, - "USE_POLYFILL": true + "SUPPORT_LANG": false } }], "babel-plugin-minify-constant-folding", @@ -38,6 +39,7 @@ ], "ignore": [ "config.js", + "bundle.js", "export.js" ], "minified": true, diff --git a/README.md b/README.md index e9c37df..9aca3b6 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@

### FlexSearch v0.7.0 (Beta) +======= Beta is now available. Please test the new version and post back issues and suggestions. The Beta will pushed to the master branch in 2 weeks. diff --git a/bench/dist/flexsearch.light.js b/bench/dist/flexsearch.light.js index 99ed329..ccfe077 100644 --- a/bench/dist/flexsearch.light.js +++ b/bench/dist/flexsearch.light.js @@ -5,14 +5,15 @@ * Licence: Apache-2.0 * https://github.com/nextapps-de/flexsearch */ -(function(){'use strict';var v;Object.assign||(Object.assign=function(){for(var a=arguments,b=a.length,c=a[0],f=1,d,g,h;fk;u--)r=n.substring(k,u),L(e,c,r,a,t,m,d,h-1);break;default:if(l=L(e,c,n,a,1,m,d,h-1),g&&1=d)for(l=c._ctx[n]||(c._ctx[n]=C()),n=this.b[n]||(this.b[n]=A(h-(d||0))),m=q-g,r=q+g+1,0>m&&(m=0),r>f&&(r=f);mw&&(e=0);y=e||0;var B=y+b;B=h&&(a=a[e-(d+.5>>0)],a=a[c]||(a[c]=[]),a[a.length]=f);return d}function M(a,b){if(a)for(var c=Object.keys(a),f=0,d=c.length;fk;u--)r=q.substring(k,u),N(f,c,r,a,t,n,d,g-1);break;default:if(m=N(f,c,q,a,1,n,d,g-1),h&&1=d)for(m=c._ctx[q]||(c._ctx[q]=z()),q=this.b[q]||(this.b[q]=y(g-(d||0))),n=l-h,r=l+h+1,0>n&&(n=0),r>e&&(r=e);nx&&(f=0);A=f||0;var D=A+b;D=g&&(a=a[f-(d+.5>>0)],a=a[c]||(a[c]=[]),a[a.length]=e);return d}function O(a,b){if(a)for(var c=Object.keys(a),e=0,d=c.length;et;H--)r=p.substring(t,H),V(n,d,r,a,K,v,g,q-1);break;default:if(u=V(n,d,p,a,1,v,g,q-1),l&&1=g)for(u=d._ctx[p]||(d._ctx[p]=G()),p=this.g[p]||(this.g[p]=B(q-(g||0))),v=k-l,r=k+l+1,0>v&&(v=0),r>e&&(r=e);v=e&&(a=a[g-(d+.5>>0)],a=a[c]||(a[c]=[]),a[a.length]=f);return d}function W(a,b){if(a)for(var c=Object.keys(a),f=0,d=c.length;f -n&&(g=0);g=g||0;var E=g+b;Eu;I--)t=r.substring(u,I),T(n,d,t,a,M,w,h,p-1);break;default:if(v=T(n,d,r,a,1,w,h,p-1),k&&1=h)for(v=d._ctx[r]||(d._ctx[r]=B()),r=this.h[r]||(this.h[r]=A(p-(h||0))),w=l-k,t=l+k+1,0>w&&(w=0),t>e&&(t=e);w=e&&(a=a[h-(d+.5>>0)],a=a[c]||(a[c]=[]),a[a.length]=f);return d}function U(a,b){if(a)for(var c=Object.keys(a),f=0,d=c.length;f +n&&(h=0);h=h||0;var E=h+b;E 1) { + str = replace$$module$src$common(str, this.stemmer); + } + if (_collapse && str.length > 1) { + str = collapse$$module$src$common(str); + } + if (str) { + if (split || split === "") { + var words = str.split(split); + return this.filter ? filter$$module$src$common(words, this.filter) : words; + } + } + } + return str; +}; var module$src$common = {}; module$src$common.collapse = collapse$$module$src$common; module$src$common.create_object = create_object$$module$src$common; module$src$common.create_object_array = create_object_array$$module$src$common; +module$src$common.filter = filter$$module$src$common; module$src$common.get_keys = get_keys$$module$src$common; module$src$common.is_array = is_array$$module$src$common; module$src$common.is_function = is_function$$module$src$common; @@ -444,124 +483,22 @@ var $jscompDefaultExport$$module$src$presets = {"memory":{encode:SUPPORT_ENCODER threshold:0, resolution:3, depth:3}, "fast":{encode:"icase", tokenize:"strict", threshold:8, resolution:9, depth:1}}; var module$src$presets = {}; module$src$presets.default = $jscompDefaultExport$$module$src$presets; -var regex_whitespace$$module$src$lang$latin$simple = regex$$module$src$common("[\\W_]+"); -var regex_strip$$module$src$lang$latin$simple = regex$$module$src$common("[^a-z0-9 ]"); -var regex_a$$module$src$lang$latin$simple = regex$$module$src$common("[\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5]"); -var regex_e$$module$src$lang$latin$simple = regex$$module$src$common("[\u00e8\u00e9\u00ea\u00eb]"); -var regex_i$$module$src$lang$latin$simple = regex$$module$src$common("[\u00ec\u00ed\u00ee\u00ef]"); -var regex_o$$module$src$lang$latin$simple = regex$$module$src$common("[\u00f2\u00f3\u00f4\u00f5\u00f6\u0151]"); -var regex_u$$module$src$lang$latin$simple = regex$$module$src$common("[\u00f9\u00fa\u00fb\u00fc\u0171]"); -var regex_y$$module$src$lang$latin$simple = regex$$module$src$common("[\u00fd\u0177\u00ff]"); -var regex_n$$module$src$lang$latin$simple = regex$$module$src$common("\u00f1"); -var regex_c$$module$src$lang$latin$simple = regex$$module$src$common("[\u00e7c]"); -var regex_s$$module$src$lang$latin$simple = regex$$module$src$common("\u00df"); -var regex_and$$module$src$lang$latin$simple = regex$$module$src$common(" & "); -var regex_pairs_simple$$module$src$lang$latin$simple = [regex_a$$module$src$lang$latin$simple, "a", regex_e$$module$src$lang$latin$simple, "e", regex_i$$module$src$lang$latin$simple, "i", regex_o$$module$src$lang$latin$simple, "o", regex_u$$module$src$lang$latin$simple, "u", regex_y$$module$src$lang$latin$simple, "y", regex_n$$module$src$lang$latin$simple, "n", regex_c$$module$src$lang$latin$simple, "k", regex_s$$module$src$lang$latin$simple, "s", regex_and$$module$src$lang$latin$simple, " and ", -regex_whitespace$$module$src$lang$latin$simple, " ", regex_strip$$module$src$lang$latin$simple, ""]; -var $jscompDefaultExport$$module$src$lang$latin$simple = function(str) { - if (!str) { - return str; - } - return replace$$module$src$common(str.toLowerCase(), regex_pairs_simple$$module$src$lang$latin$simple); -}; -var module$src$lang$latin$simple = {}; -module$src$lang$latin$simple.default = $jscompDefaultExport$$module$src$lang$latin$simple; -var regex_ae$$module$src$lang$latin$advanced = regex$$module$src$common("ae"); -var regex_ai$$module$src$lang$latin$advanced = regex$$module$src$common("ai"); -var regex_ay$$module$src$lang$latin$advanced = regex$$module$src$common("ay"); -var regex_ey$$module$src$lang$latin$advanced = regex$$module$src$common("ey"); -var regex_oe$$module$src$lang$latin$advanced = regex$$module$src$common("oe"); -var regex_ue$$module$src$lang$latin$advanced = regex$$module$src$common("ue"); -var regex_ie$$module$src$lang$latin$advanced = regex$$module$src$common("ie"); -var regex_sz$$module$src$lang$latin$advanced = regex$$module$src$common("sz"); -var regex_zs$$module$src$lang$latin$advanced = regex$$module$src$common("zs"); -var regex_ck$$module$src$lang$latin$advanced = regex$$module$src$common("ck"); -var regex_cc$$module$src$lang$latin$advanced = regex$$module$src$common("cc"); -var regex_sh$$module$src$lang$latin$advanced = regex$$module$src$common("sh"); -var regex_th$$module$src$lang$latin$advanced = regex$$module$src$common("th"); -var regex_dt$$module$src$lang$latin$advanced = regex$$module$src$common("dt"); -var regex_ph$$module$src$lang$latin$advanced = regex$$module$src$common("ph"); -var regex_pf$$module$src$lang$latin$advanced = regex$$module$src$common("pf"); -var regex_ou$$module$src$lang$latin$advanced = regex$$module$src$common("ou"); -var regex_uo$$module$src$lang$latin$advanced = regex$$module$src$common("uo"); -var pairs$$module$src$lang$latin$advanced = [regex_ae$$module$src$lang$latin$advanced, "a", regex_ai$$module$src$lang$latin$advanced, "ei", regex_ay$$module$src$lang$latin$advanced, "ei", regex_ey$$module$src$lang$latin$advanced, "ei", regex_oe$$module$src$lang$latin$advanced, "o", regex_ue$$module$src$lang$latin$advanced, "u", regex_ie$$module$src$lang$latin$advanced, "i", regex_sz$$module$src$lang$latin$advanced, "s", regex_zs$$module$src$lang$latin$advanced, "s", regex_sh$$module$src$lang$latin$advanced, -"s", regex_ck$$module$src$lang$latin$advanced, "k", regex_cc$$module$src$lang$latin$advanced, "k", regex_th$$module$src$lang$latin$advanced, "t", regex_dt$$module$src$lang$latin$advanced, "t", regex_ph$$module$src$lang$latin$advanced, "f", regex_pf$$module$src$lang$latin$advanced, "f", regex_ou$$module$src$lang$latin$advanced, "o", regex_uo$$module$src$lang$latin$advanced, "u"]; -var $jscompDefaultExport$$module$src$lang$latin$advanced = function(string, _skip_post_processing) { - if (!string) { - return string; - } - string = $jscompDefaultExport$$module$src$lang$latin$simple(string); - if (string.length > 2) { - string = replace$$module$src$common(string, pairs$$module$src$lang$latin$advanced); - } - if (!_skip_post_processing) { - if (string.length > 1) { - string = collapse$$module$src$common(string); - } - } - return string; -}; -var module$src$lang$latin$advanced = {}; -module$src$lang$latin$advanced.default = $jscompDefaultExport$$module$src$lang$latin$advanced; -var regex_whitespace$$module$src$lang$latin$balance = regex$$module$src$common("[\\W_]+"); -var regex_strip$$module$src$lang$latin$balance = regex$$module$src$common("[^a-z0-9 ]"); -var pairs$$module$src$lang$latin$balance = [regex_whitespace$$module$src$lang$latin$balance, " ", regex_strip$$module$src$lang$latin$balance, ""]; -var $jscompDefaultExport$$module$src$lang$latin$balance = function(str) { - if (!str) { - return str; - } - return collapse$$module$src$common(replace$$module$src$common(str.toLowerCase(), pairs$$module$src$lang$latin$balance)); -}; -var module$src$lang$latin$balance = {}; -module$src$lang$latin$balance.default = $jscompDefaultExport$$module$src$lang$latin$balance; -var soundex_b$$module$src$lang$latin$extra = regex$$module$src$common("p"); -var soundex_s$$module$src$lang$latin$extra = regex$$module$src$common("z"); -var soundex_k$$module$src$lang$latin$extra = regex$$module$src$common("[cgq]"); -var soundex_m$$module$src$lang$latin$extra = regex$$module$src$common("n"); -var soundex_t$$module$src$lang$latin$extra = regex$$module$src$common("d"); -var soundex_f$$module$src$lang$latin$extra = regex$$module$src$common("[vw]"); -var regex_vowel$$module$src$lang$latin$extra = regex$$module$src$common("[aeiouy]"); -var regex_pairs_extra$$module$src$lang$latin$extra = [soundex_b$$module$src$lang$latin$extra, "b", soundex_s$$module$src$lang$latin$extra, "s", soundex_k$$module$src$lang$latin$extra, "k", soundex_m$$module$src$lang$latin$extra, "m", soundex_t$$module$src$lang$latin$extra, "t", soundex_f$$module$src$lang$latin$extra, "f", regex_vowel$$module$src$lang$latin$extra, ""]; -var $jscompDefaultExport$$module$src$lang$latin$extra = function(str) { - if (!str) { - return str; - } - str = $jscompDefaultExport$$module$src$lang$latin$advanced(str, true); - if (str.length > 1) { - str = str.split(" "); - for (var i = 0; i < str.length; i++) { - var current = str[i]; - if (current.length > 1) { - str[i] = current[0] + replace$$module$src$common(current.substring(1), regex_pairs_extra$$module$src$lang$latin$extra); - } - } - str = str.join(" "); - str = collapse$$module$src$common(str); - } - return str; -}; -var module$src$lang$latin$extra = {}; -module$src$lang$latin$extra.default = $jscompDefaultExport$$module$src$lang$latin$extra; -function encode$$module$src$lang$latin$index(str) { - return str.toLowerCase(); +var rtl$$module$src$lang$latin$default = false; +var tokenize$$module$src$lang$latin$default = ""; +var $jscompDefaultExport$$module$src$lang$latin$default = {encode:encode$$module$src$lang$latin$default, rtl:rtl$$module$src$lang$latin$default}; +var split$$module$src$lang$latin$default = /[\W_]+/; +function encode$$module$src$lang$latin$default(str) { + return this.pipeline(str.toLowerCase(), false, split$$module$src$lang$latin$default, false); } -var split$$module$src$lang$latin$index = /[\W_]+/; -var rtl$$module$src$lang$latin$index = false; -var advanced$$module$src$lang$latin$index = $jscompDefaultExport$$module$src$lang$latin$advanced; -var balance$$module$src$lang$latin$index = $jscompDefaultExport$$module$src$lang$latin$balance; -var extra$$module$src$lang$latin$index = $jscompDefaultExport$$module$src$lang$latin$extra; -var simple$$module$src$lang$latin$index = $jscompDefaultExport$$module$src$lang$latin$simple; -var module$src$lang$latin$index = {}; -module$src$lang$latin$index.advanced = advanced$$module$src$lang$latin$index; -module$src$lang$latin$index.balance = balance$$module$src$lang$latin$index; -module$src$lang$latin$index.encode = encode$$module$src$lang$latin$index; -module$src$lang$latin$index.extra = extra$$module$src$lang$latin$index; -module$src$lang$latin$index.rtl = rtl$$module$src$lang$latin$index; -module$src$lang$latin$index.simple = simple$$module$src$lang$latin$index; -module$src$lang$latin$index.split = split$$module$src$lang$latin$index; -var defaults$$module$src$flexsearch = {encode:encode$$module$src$lang$latin$index, tokenize:"strict", split:split$$module$src$lang$latin$index, cache:false, async:false, worker:false, rtl:false, doc:false, resolution:9, threshold:0, depth:0}; +var module$src$lang$latin$default = {}; +module$src$lang$latin$default.default = $jscompDefaultExport$$module$src$lang$latin$default; +module$src$lang$latin$default.encode = encode$$module$src$lang$latin$default; +module$src$lang$latin$default.rtl = rtl$$module$src$lang$latin$default; +module$src$lang$latin$default.tokenize = tokenize$$module$src$lang$latin$default; +var defaults$$module$src$flexsearch = {"encode":encode$$module$src$lang$latin$default, "tokenize":"strict", "cache":false, "async":false, "worker":false, "rtl":false, "doc":false, "resolution":9, "threshold":0, "depth":0}; var id_counter$$module$src$flexsearch = 0; var global_lang$$module$src$flexsearch = {}; +var global_charset$$module$src$flexsearch = {}; function FlexSearch$$module$src$flexsearch(options) { if (!(this instanceof FlexSearch$$module$src$flexsearch)) { return new FlexSearch$$module$src$flexsearch(options); @@ -576,22 +513,15 @@ function FlexSearch$$module$src$flexsearch(options) { return this.index.length; }); } -FlexSearch$$module$src$flexsearch["registerCharset"] = function(name, encoder, split, rtl) { - var lang = global_lang$$module$src$flexsearch[name] || (global_lang$$module$src$flexsearch[name] = {}); - lang.encoder = encoder; - lang.split = split; - lang.rtl = rtl; +FlexSearch$$module$src$flexsearch["registerCharset"] = function(name, charset) { + global_charset$$module$src$flexsearch[name] = charset; return FlexSearch$$module$src$flexsearch; }; -FlexSearch$$module$src$flexsearch["registerLanguage"] = function(name, filter, stemmer, matcher) { - var lang = global_lang$$module$src$flexsearch[name] || (global_lang$$module$src$flexsearch[name] = {}); - lang.filter = filter; - lang.stemmer = stemmer; - lang.matcher = matcher; +FlexSearch$$module$src$flexsearch["registerLanguage"] = function(name, lang) { + global_charset$$module$src$flexsearch[name] = lang; return FlexSearch$$module$src$flexsearch; }; FlexSearch$$module$src$flexsearch.prototype.init = function(options) { - this.matcher = []; var custom; var doc; if (SUPPORT_PRESET) { @@ -609,7 +539,7 @@ FlexSearch$$module$src$flexsearch.prototype.init = function(options) { } } } - if (!this.encoder) { + if (!this.encode) { if (options) { options = Object.assign({}, defaults$$module$src$flexsearch, options); } else { @@ -634,22 +564,21 @@ FlexSearch$$module$src$flexsearch.prototype.init = function(options) { } this.worker = custom; } - var charset = options["charset"]; - var lang = options["lang"]; - this.tokenizer = options["tokenize"]; - this.split = is_string$$module$src$common(custom = charset || options["split"]) ? global_lang$$module$src$flexsearch[custom] ? global_lang$$module$src$flexsearch[custom].split : regex$$module$src$common(custom) : custom; - this.rtl = is_string$$module$src$common(custom = charset || options["rtl"]) ? global_lang$$module$src$flexsearch[custom].rtl : custom; if (SUPPORT_ASYNC) { this.async = options["async"]; - this._timer = 0; + this.timer = 0; } + var charset = options["charset"]; + var lang = options["lang"]; + this.tokenizer = (is_string$$module$src$common(charset) ? global_charset$$module$src$flexsearch[charset].tokenize : charset && charset.tokenize) || options["tokenize"]; + this.rtl = is_string$$module$src$common(custom = options["rtl"] || charset) ? global_charset$$module$src$flexsearch[custom].rtl : charset && charset.rtl || custom; this.threshold = options["threshold"]; this.resolution = (custom = options["resolution"]) <= this.threshold ? this.threshold + 1 : custom; this.depth = this.tokenizer === "strict" && options["depth"] || 0; - this.encoder = is_string$$module$src$common(custom = charset || options["encode"]) ? global_lang$$module$src$flexsearch[custom.indexOf(":") === -1 ? custom + ":default" : custom].encode : custom; - this.matcher = (custom = lang || options["matcher"]) && init_matcher$$module$src$flexsearch(is_string$$module$src$common(custom) ? global_lang$$module$src$flexsearch[custom].matcher : custom); - this.filter = (custom = lang || options["filter"]) && init_filter$$module$src$flexsearch(is_string$$module$src$common(custom) ? global_lang$$module$src$flexsearch[custom].filter : custom); - this.stemmer = (custom = lang || options["stemmer"]) && init_stemmer$$module$src$flexsearch(is_string$$module$src$common(custom) ? global_lang$$module$src$flexsearch[custom].stemmer : custom); + this.encode = is_string$$module$src$common(custom = options["encode"] || charset) ? global_charset$$module$src$flexsearch[custom.indexOf(":") === -1 ? custom + ":default" : custom].encode : charset && charset.encode || custom; + this.matcher = (custom = options["matcher"] || lang) && init_stemmer_or_matcher$$module$src$flexsearch(is_string$$module$src$common(custom) ? global_lang$$module$src$flexsearch[custom].matcher : lang && lang.matcher || custom, false); + this.filter = (custom = options["filter"] || lang) && init_filter$$module$src$flexsearch(is_string$$module$src$common(custom) ? global_lang$$module$src$flexsearch[custom].filter : lang && lang.filter || custom); + this.stemmer = (custom = options["stemmer"] || lang) && init_stemmer_or_matcher$$module$src$flexsearch(is_string$$module$src$common(custom) ? global_lang$$module$src$flexsearch[custom].stemmer : lang && lang.stemmer || custom, true); if (SUPPORT_DOCUMENT) { this.doc = doc = (custom = options["doc"]) && clone_object$$module$src$flexsearch(custom); if (doc) { @@ -761,17 +690,6 @@ function clone_object$$module$src$flexsearch(obj) { } return clone; } -function init_matcher$$module$src$flexsearch(custom) { - var keys = get_keys$$module$src$common(custom); - var length = keys.length; - var matcher = new Array(length * 2); - for (var i = 0, count = 0; i < length; i++) { - var key = keys[i]; - matcher[count++] = regex$$module$src$common(key); - matcher[count++] = custom[key]; - } - return matcher; -} FlexSearch$$module$src$flexsearch.prototype.add = function(id, content, callback, _skip_update, _recall) { if (SUPPORT_DOCUMENT && this.doc && is_object$$module$src$common(id)) { return this.handle_docs("add", id, content); @@ -808,7 +726,7 @@ FlexSearch$$module$src$flexsearch.prototype.add = function(id, content, callback if (!content.length) { return this; } - var words = this.tokenize(content); + var words = content; var dupes = create_object$$module$src$common(); dupes["_ctx"] = create_object$$module$src$common(); var word_length = words.length; @@ -1199,7 +1117,7 @@ FlexSearch$$module$src$flexsearch.prototype.search = function(query, limit, call if (!_query.length) { return result; } - var words = this.tokenize(_query); + var words = _query; var length = words.length; var found = true; var check = []; @@ -1343,55 +1261,31 @@ function remove_index$$module$src$flexsearch(map, id) { } } } -FlexSearch$$module$src$flexsearch.prototype.encode = function(value) { - if (value && this.encoder) { - value = this.encoder(value); - } - if (value && this.matcher.length) { - value = replace$$module$src$common(value, this.matcher); - } - if (value && this.stemmer) { - value = replace$$module$src$common(value, this.stemmer); - } - return value; -}; -FlexSearch$$module$src$flexsearch.prototype.tokenize = function(content) { - var words = is_array$$module$src$common(content) ? content : is_function$$module$src$common(this.tokenizer) ? this.tokenizer(content) : content.split(this.split); - if (this.filter) { - words = filter_words$$module$src$flexsearch(words, this.filter); - } - return words; -}; -function filter_words$$module$src$flexsearch(words, fn_or_map) { - var length = words.length; - var has_function = is_function$$module$src$common(fn_or_map); - var filtered = []; - for (var i = 0, count = 0; i < length; i++) { - var word = words[i]; - if (word) { - if (has_function && fn_or_map(word) || !has_function && !fn_or_map[word]) { - filtered[count++] = word; - } - } - } - return filtered; -} function init_filter$$module$src$flexsearch(words) { var final = create_object$$module$src$common(); - for (var i = 0; i < words.length; i++) { - var word = words[i]; - final[word] = 1; + for (var i = 0, length = words.length; i < length; i++) { + final[words[i]] = 1; } return final; } -function init_stemmer$$module$src$flexsearch(stem) { - var keys = Object.keys(stem); +function init_stemmer_or_matcher$$module$src$flexsearch(obj, is_stemmer) { + var keys = get_keys$$module$src$common(obj); var length = keys.length; - var final = new Array(length * 2); - for (var i = 0, count = 0; i < length; i++) { + var final = []; + var removal = ""; + var count = 0; + for (var i = 0, tmp = undefined; i < length; i++) { var key = keys[i]; - final[count++] = regex$$module$src$common(key + "(?!\\b)" + key + "(\\b)"); - final[count++] = stem[key]; + if (tmp = obj[key]) { + final[count++] = regex$$module$src$common(is_stemmer ? "(?!\\b)" + key + "(\\b)" : key); + final[count++] = tmp; + } else { + removal += (removal ? "|" : "") + key; + } + } + if (removal) { + final[count++] = regex$$module$src$common(is_stemmer ? "(?!\\b)(" + removal + ")(\\b)" : "(" + removal + ")"); + final[count] = ""; } return final; } @@ -1628,6 +1522,275 @@ function intersect$$module$src$flexsearch(arrays, limit, cursor, suggest, bool, } var module$src$flexsearch = {}; module$src$flexsearch.default = FlexSearch$$module$src$flexsearch; +module$src$flexsearch.global_charset = global_charset$$module$src$flexsearch; +module$src$flexsearch.global_lang = global_lang$$module$src$flexsearch; +var rtl$$module$src$lang$latin$simple = false; +var tokenize$$module$src$lang$latin$simple = ""; +var $jscompDefaultExport$$module$src$lang$latin$simple = {encode:encode$$module$src$lang$latin$simple, rtl:rtl$$module$src$lang$latin$simple}; +var regex_whitespace$$module$src$lang$latin$simple = regex$$module$src$common("[\\W_]+"); +var regex_strip$$module$src$lang$latin$simple = regex$$module$src$common("[^a-z0-9 ]"); +var regex_a$$module$src$lang$latin$simple = regex$$module$src$common("[\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5]"); +var regex_e$$module$src$lang$latin$simple = regex$$module$src$common("[\u00e8\u00e9\u00ea\u00eb]"); +var regex_i$$module$src$lang$latin$simple = regex$$module$src$common("[\u00ec\u00ed\u00ee\u00ef]"); +var regex_o$$module$src$lang$latin$simple = regex$$module$src$common("[\u00f2\u00f3\u00f4\u00f5\u00f6\u0151]"); +var regex_u$$module$src$lang$latin$simple = regex$$module$src$common("[\u00f9\u00fa\u00fb\u00fc\u0171]"); +var regex_y$$module$src$lang$latin$simple = regex$$module$src$common("[\u00fd\u0177\u00ff]"); +var regex_n$$module$src$lang$latin$simple = regex$$module$src$common("\u00f1"); +var regex_c$$module$src$lang$latin$simple = regex$$module$src$common("[\u00e7c]"); +var regex_s$$module$src$lang$latin$simple = regex$$module$src$common("\u00df"); +var regex_and$$module$src$lang$latin$simple = regex$$module$src$common(" & "); +var pairs$$module$src$lang$latin$simple = [regex_a$$module$src$lang$latin$simple, "a", regex_e$$module$src$lang$latin$simple, "e", regex_i$$module$src$lang$latin$simple, "i", regex_o$$module$src$lang$latin$simple, "o", regex_u$$module$src$lang$latin$simple, "u", regex_y$$module$src$lang$latin$simple, "y", regex_n$$module$src$lang$latin$simple, "n", regex_c$$module$src$lang$latin$simple, "k", regex_s$$module$src$lang$latin$simple, "s", regex_and$$module$src$lang$latin$simple, " and ", regex_whitespace$$module$src$lang$latin$simple, +" ", regex_strip$$module$src$lang$latin$simple, ""]; +function encode$$module$src$lang$latin$simple(str, self) { + self || (self = this); + return self.pipeline(str.toLowerCase(), pairs$$module$src$lang$latin$simple, " ", false); +} +var module$src$lang$latin$simple = {}; +module$src$lang$latin$simple.default = $jscompDefaultExport$$module$src$lang$latin$simple; +module$src$lang$latin$simple.encode = encode$$module$src$lang$latin$simple; +module$src$lang$latin$simple.rtl = rtl$$module$src$lang$latin$simple; +module$src$lang$latin$simple.tokenize = tokenize$$module$src$lang$latin$simple; +var rtl$$module$src$lang$latin$advanced = false; +var tokenize$$module$src$lang$latin$advanced = ""; +var $jscompDefaultExport$$module$src$lang$latin$advanced = {encode:encode$$module$src$lang$latin$advanced, rtl:rtl$$module$src$lang$latin$advanced}; +var regex_ae$$module$src$lang$latin$advanced = regex$$module$src$common("ae"); +var regex_ai$$module$src$lang$latin$advanced = regex$$module$src$common("ai"); +var regex_ay$$module$src$lang$latin$advanced = regex$$module$src$common("ay"); +var regex_ey$$module$src$lang$latin$advanced = regex$$module$src$common("ey"); +var regex_oe$$module$src$lang$latin$advanced = regex$$module$src$common("oe"); +var regex_ue$$module$src$lang$latin$advanced = regex$$module$src$common("ue"); +var regex_ie$$module$src$lang$latin$advanced = regex$$module$src$common("ie"); +var regex_sz$$module$src$lang$latin$advanced = regex$$module$src$common("sz"); +var regex_zs$$module$src$lang$latin$advanced = regex$$module$src$common("zs"); +var regex_ck$$module$src$lang$latin$advanced = regex$$module$src$common("ck"); +var regex_cc$$module$src$lang$latin$advanced = regex$$module$src$common("cc"); +var regex_sh$$module$src$lang$latin$advanced = regex$$module$src$common("sh"); +var regex_th$$module$src$lang$latin$advanced = regex$$module$src$common("th"); +var regex_dt$$module$src$lang$latin$advanced = regex$$module$src$common("dt"); +var regex_ph$$module$src$lang$latin$advanced = regex$$module$src$common("ph"); +var regex_pf$$module$src$lang$latin$advanced = regex$$module$src$common("pf"); +var regex_ou$$module$src$lang$latin$advanced = regex$$module$src$common("ou"); +var regex_uo$$module$src$lang$latin$advanced = regex$$module$src$common("uo"); +var pairs$$module$src$lang$latin$advanced = [regex_ae$$module$src$lang$latin$advanced, "a", regex_ai$$module$src$lang$latin$advanced, "ei", regex_ay$$module$src$lang$latin$advanced, "ei", regex_ey$$module$src$lang$latin$advanced, "ei", regex_oe$$module$src$lang$latin$advanced, "o", regex_ue$$module$src$lang$latin$advanced, "u", regex_ie$$module$src$lang$latin$advanced, "i", regex_sz$$module$src$lang$latin$advanced, "s", regex_zs$$module$src$lang$latin$advanced, "s", regex_sh$$module$src$lang$latin$advanced, +"s", regex_ck$$module$src$lang$latin$advanced, "k", regex_cc$$module$src$lang$latin$advanced, "k", regex_th$$module$src$lang$latin$advanced, "t", regex_dt$$module$src$lang$latin$advanced, "t", regex_ph$$module$src$lang$latin$advanced, "f", regex_pf$$module$src$lang$latin$advanced, "f", regex_ou$$module$src$lang$latin$advanced, "o", regex_uo$$module$src$lang$latin$advanced, "u"]; +function encode$$module$src$lang$latin$advanced(str, _skip_postprocessing) { + if (str) { + str = encode$$module$src$lang$latin$simple(str, this).join(" "); + if (str.length > 2) { + str = replace$$module$src$common(str, pairs$$module$src$lang$latin$advanced); + } + if (!_skip_postprocessing) { + if (str.length > 1) { + str = collapse$$module$src$common(str); + } + if (str) { + str = str.split(" "); + } + } + } + return str; +} +var module$src$lang$latin$advanced = {}; +module$src$lang$latin$advanced.default = $jscompDefaultExport$$module$src$lang$latin$advanced; +module$src$lang$latin$advanced.encode = encode$$module$src$lang$latin$advanced; +module$src$lang$latin$advanced.rtl = rtl$$module$src$lang$latin$advanced; +module$src$lang$latin$advanced.tokenize = tokenize$$module$src$lang$latin$advanced; +var rtl$$module$src$lang$latin$balance = false; +var tokenize$$module$src$lang$latin$balance = ""; +var $jscompDefaultExport$$module$src$lang$latin$balance = {encode:encode$$module$src$lang$latin$balance, rtl:rtl$$module$src$lang$latin$balance}; +var regex_whitespace$$module$src$lang$latin$balance = /[\W_]+/g; +var regex_strip$$module$src$lang$latin$balance = /[^a-z0-9 ]/g; +var pairs$$module$src$lang$latin$balance = [regex_whitespace$$module$src$lang$latin$balance, " ", regex_strip$$module$src$lang$latin$balance, ""]; +function encode$$module$src$lang$latin$balance(str) { + return this.pipeline(str.toLowerCase(), pairs$$module$src$lang$latin$balance, " ", false); +} +var module$src$lang$latin$balance = {}; +module$src$lang$latin$balance.default = $jscompDefaultExport$$module$src$lang$latin$balance; +module$src$lang$latin$balance.encode = encode$$module$src$lang$latin$balance; +module$src$lang$latin$balance.rtl = rtl$$module$src$lang$latin$balance; +module$src$lang$latin$balance.tokenize = tokenize$$module$src$lang$latin$balance; +var rtl$$module$src$lang$latin$extra = false; +var tokenize$$module$src$lang$latin$extra = ""; +var $jscompDefaultExport$$module$src$lang$latin$extra = {encode:encode$$module$src$lang$latin$extra, rtl:rtl$$module$src$lang$latin$extra}; +var prefix$$module$src$lang$latin$extra = "(?!\\b)"; +var soundex_b$$module$src$lang$latin$extra = regex$$module$src$common(prefix$$module$src$lang$latin$extra + "p"); +var soundex_s$$module$src$lang$latin$extra = regex$$module$src$common(prefix$$module$src$lang$latin$extra + "z"); +var soundex_k$$module$src$lang$latin$extra = regex$$module$src$common(prefix$$module$src$lang$latin$extra + "[cgq]"); +var soundex_m$$module$src$lang$latin$extra = regex$$module$src$common(prefix$$module$src$lang$latin$extra + "n"); +var soundex_t$$module$src$lang$latin$extra = regex$$module$src$common(prefix$$module$src$lang$latin$extra + "d"); +var soundex_f$$module$src$lang$latin$extra = regex$$module$src$common(prefix$$module$src$lang$latin$extra + "[vw]"); +var regex_vowel$$module$src$lang$latin$extra = regex$$module$src$common(prefix$$module$src$lang$latin$extra + "[aeiouy]"); +var pairs$$module$src$lang$latin$extra = [soundex_b$$module$src$lang$latin$extra, "b", soundex_s$$module$src$lang$latin$extra, "s", soundex_k$$module$src$lang$latin$extra, "k", soundex_m$$module$src$lang$latin$extra, "m", soundex_t$$module$src$lang$latin$extra, "t", soundex_f$$module$src$lang$latin$extra, "f", regex_vowel$$module$src$lang$latin$extra, ""]; +function encode$$module$src$lang$latin$extra(str) { + if (str) { + str = encode$$module$src$lang$latin$advanced(str, true); + if (str.length > 1) { + str = replace$$module$src$common(str, pairs$$module$src$lang$latin$extra); + } + if (str.length > 1) { + str = collapse$$module$src$common(str); + } + if (str) { + str = str.split(" "); + } + } + return str; +} +var module$src$lang$latin$extra = {}; +module$src$lang$latin$extra.default = $jscompDefaultExport$$module$src$lang$latin$extra; +module$src$lang$latin$extra.encode = encode$$module$src$lang$latin$extra; +module$src$lang$latin$extra.rtl = rtl$$module$src$lang$latin$extra; +module$src$lang$latin$extra.tokenize = tokenize$$module$src$lang$latin$extra; +var rtl$$module$src$lang$latin$soundex = false; +var tokenize$$module$src$lang$latin$soundex = "strict"; +var $jscompDefaultExport$$module$src$lang$latin$soundex = {encode:encode$$module$src$lang$latin$soundex, rtl:rtl$$module$src$lang$latin$soundex, tokenize:tokenize$$module$src$lang$latin$soundex}; +var regex_whitespace$$module$src$lang$latin$soundex = /[\W_]+/g; +var regex_strip$$module$src$lang$latin$soundex = /[^a-z ]/g; +var pairs$$module$src$lang$latin$soundex = [regex_whitespace$$module$src$lang$latin$soundex, " ", regex_strip$$module$src$lang$latin$soundex, ""]; +function encode$$module$src$lang$latin$soundex(str) { + str = this.pipeline(str.toLowerCase(), pairs$$module$src$lang$latin$soundex, false, false); + var result = []; + if (str) { + var words = str.split(" "); + var length = words.length; + for (var x = 0, count = 0; x < length; x++) { + if ((str = words[x]) && (!this.filter || !this.filter[str])) { + var code = str[0]; + var previous = getCode$$module$src$lang$latin$soundex(code); + for (var i = 1; i < str.length; i++) { + var current = getCode$$module$src$lang$latin$soundex(str[i]); + if (current !== previous) { + code += current; + previous = current; + if (code.length === 4) { + break; + } + } + } + result[count++] = (code + "0000").substring(0, 4); + } + } + } + return result; +} +function getCode$$module$src$lang$latin$soundex(char) { + switch(char) { + case "b": + case "f": + case "p": + case "v": + return 1; + case "c": + case "g": + case "j": + case "k": + case "q": + case "s": + case "x": + case "z": + return 2; + case "d": + case "t": + return 3; + case "l": + return 4; + case "m": + case "n": + return 5; + case "r": + return 6; + } + return ""; +} +var module$src$lang$latin$soundex = {}; +module$src$lang$latin$soundex.default = $jscompDefaultExport$$module$src$lang$latin$soundex; +module$src$lang$latin$soundex.encode = encode$$module$src$lang$latin$soundex; +module$src$lang$latin$soundex.rtl = rtl$$module$src$lang$latin$soundex; +module$src$lang$latin$soundex.tokenize = tokenize$$module$src$lang$latin$soundex; +var rtl$$module$src$lang$arabic$default = true; +var tokenize$$module$src$lang$arabic$default = ""; +var $jscompDefaultExport$$module$src$lang$arabic$default = {encode:encode$$module$src$lang$arabic$default, rtl:rtl$$module$src$lang$arabic$default}; +var split$$module$src$lang$arabic$default = /[\W_]+/; +function encode$$module$src$lang$arabic$default(str) { + return this.pipeline(str, false, split$$module$src$lang$arabic$default, false); +} +var module$src$lang$arabic$default = {}; +module$src$lang$arabic$default.default = $jscompDefaultExport$$module$src$lang$arabic$default; +module$src$lang$arabic$default.encode = encode$$module$src$lang$arabic$default; +module$src$lang$arabic$default.rtl = rtl$$module$src$lang$arabic$default; +module$src$lang$arabic$default.tokenize = tokenize$$module$src$lang$arabic$default; +var rtl$$module$src$lang$cjk$default = false; +var tokenize$$module$src$lang$cjk$default = "strict"; +var $jscompDefaultExport$$module$src$lang$cjk$default = {encode:encode$$module$src$lang$cjk$default, rtl:rtl$$module$src$lang$cjk$default, tokenize:tokenize$$module$src$lang$cjk$default}; +var regex$$module$src$lang$cjk$default = /[\x00-\x7F]/g; +function encode$$module$src$lang$cjk$default(str) { + return this.pipeline(str.replace(regex$$module$src$lang$cjk$default, ""), false, "", false); +} +var module$src$lang$cjk$default = {}; +module$src$lang$cjk$default.default = $jscompDefaultExport$$module$src$lang$cjk$default; +module$src$lang$cjk$default.encode = encode$$module$src$lang$cjk$default; +module$src$lang$cjk$default.rtl = rtl$$module$src$lang$cjk$default; +module$src$lang$cjk$default.tokenize = tokenize$$module$src$lang$cjk$default; +var rtl$$module$src$lang$cyrillic$default = false; +var tokenize$$module$src$lang$cyrillic$default = ""; +var $jscompDefaultExport$$module$src$lang$cyrillic$default = {encode:encode$$module$src$lang$cyrillic$default, rtl:rtl$$module$src$lang$cyrillic$default}; +var split$$module$src$lang$cyrillic$default = /[\W_]+/; +function encode$$module$src$lang$cyrillic$default(str) { + return this.pipeline(str, false, split$$module$src$lang$cyrillic$default, false); +} +var module$src$lang$cyrillic$default = {}; +module$src$lang$cyrillic$default.default = $jscompDefaultExport$$module$src$lang$cyrillic$default; +module$src$lang$cyrillic$default.encode = encode$$module$src$lang$cyrillic$default; +module$src$lang$cyrillic$default.rtl = rtl$$module$src$lang$cyrillic$default; +module$src$lang$cyrillic$default.tokenize = tokenize$$module$src$lang$cyrillic$default; +var filter$$module$src$lang$de = ["aber", "als", "am", "an", "auch", "auf", "aus", "bei", "bin", "bis", "bist", "da", "dadurch", "daher", "darum", "das", "da\u00df", "dass", "dein", "deine", "dem", "den", "der", "des", "dessen", "deshalb", "die", "dies", "dieser", "dieses", "doch", "dort", "du", "durch", "ein", "eine", "einem", "einen", "einer", "eines", "er", "es", "euer", "eure", "f\u00fcr", "hatte", "hatten", "hattest", "hattet", "hier", "hinter", "ich", "ihr", "ihre", "im", "in", "ist", "ja", +"jede", "jedem", "jeden", "jeder", "jedes", "jener", "jenes", "jetzt", "kann", "kannst", "k\u00f6nnen", "k\u00f6nnt", "machen", "mein", "meine", "mit", "mu\u00df", "mu\u00dft", "musst", "m\u00fcssen", "m\u00fc\u00dft", "nach", "nachdem", "nein", "nicht", "nun", "oder", "seid", "sein", "seine", "sich", "sie", "sind", "soll", "sollen", "sollst", "sollt", "sonst", "soweit", "sowie", "und", "unser", "unsere", "unter", "vom", "von", "vor", "wann", "warum", "was", "weiter", "weitere", "wenn", "wer", "werde", +"werden", "werdet", "weshalb", "wie", "wieder", "wieso", "wir", "wird", "wirst", "wo", "woher", "wohin", "zu", "zum", "zur", "\u00fcber"]; +var stemmer$$module$src$lang$de = {"niss":"", "isch":"", "lich":"", "heit":"", "keit":"", "ell":"", "bar":"", "end":"", "ung":"", "est":"", "ern":"", "em":"", "er":"", "en":"", "es":"", "st":"", "ig":"", "ik":"", "e":"", "s":""}; +var matcher$$module$src$lang$de = {}; +var $jscompDefaultExport$$module$src$lang$de = {filter:filter$$module$src$lang$de, stemmer:stemmer$$module$src$lang$de, matcher:matcher$$module$src$lang$de}; +var module$src$lang$de = {}; +module$src$lang$de.default = $jscompDefaultExport$$module$src$lang$de; +module$src$lang$de.filter = filter$$module$src$lang$de; +module$src$lang$de.matcher = matcher$$module$src$lang$de; +module$src$lang$de.stemmer = stemmer$$module$src$lang$de; +var filter$$module$src$lang$en = ["a", "about", "above", "after", "again", "against", "all", "also", "am", "an", "and", "any", "are", "aren't", "as", "at", "be", "because", "been", "before", "being", "below", "both", "but", "by", "can", "cannot", "can't", "come", "could", "couldn't", "did", "didn't", "do", "does", "doesn't", "doing", "dont", "down", "during", "each", "even", "few", "first", "for", "from", "further", "get", "go", "had", "hadn't", "has", "hasn't", "have", "haven't", "having", "he", +"hed", "her", "here", "here's", "hers", "herself", "hes", "him", "himself", "his", "how", "how's", "i", "id", "if", "ill", "im", "in", "into", "is", "isn't", "it", "it's", "itself", "i've", "just", "know", "let's", "like", "make", "me", "more", "most", "mustn't", "my", "myself", "new", "no", "nor", "not", "now", "of", "off", "on", "once", "only", "or", "other", "ought", "our", "our's", "ourselves", "out", "over", "own", "same", "say", "see", "shan't", "she", "she'd", "shell", "shes", "should", "shouldn't", +"so", "some", "such", "than", "that", "that's", "the", "their", "theirs", "them", "themselves", "then", "there", "there's", "these", "they", "they'd", "they'll", "they're", "they've", "this", "those", "through", "time", "to", "too", "until", "up", "us", "very", "want", "was", "wasn't", "way", "we", "wed", "well", "were", "weren't", "we've", "what", "what's", "when", "when's", "where", "where's", "which", "while", "who", "whom", "who's", "why", "why's", "will", "with", "won't", "would", "wouldn't", +"you", "you'd", "you'll", "your", "you're", "your's", "yourself", "yourselves", "you've"]; +var stemmer$$module$src$lang$en = {"ational":"ate", "iveness":"ive", "fulness":"ful", "ousness":"ous", "ization":"ize", "tional":"tion", "biliti":"ble", "icate":"ic", "ative":"", "alize":"al", "iciti":"ic", "entli":"ent", "ousli":"ous", "alism":"al", "ation":"ate", "aliti":"al", "iviti":"ive", "ement":"", "enci":"ence", "anci":"ance", "izer":"ize", "alli":"al", "ator":"ate", "logi":"log", "ical":"ic", "ance":"", "ence":"", "ness":"", "able":"", "ible":"", "ment":"", "eli":"e", "bli":"ble", "ful":"", +"ant":"", "ent":"", "ism":"", "ate":"", "iti":"", "ous":"", "ive":"", "ize":"", "al":"", "ou":"", "er":"", "ic":""}; +var matcher$$module$src$lang$en = {}; +var $jscompDefaultExport$$module$src$lang$en = {filter:filter$$module$src$lang$en, stemmer:stemmer$$module$src$lang$en, matcher:matcher$$module$src$lang$en}; +var module$src$lang$en = {}; +module$src$lang$en.default = $jscompDefaultExport$$module$src$lang$en; +module$src$lang$en.filter = filter$$module$src$lang$en; +module$src$lang$en.matcher = matcher$$module$src$lang$en; +module$src$lang$en.stemmer = stemmer$$module$src$lang$en; +var filter$$module$src$lang$at = ["aber", "als", "am", "an", "auch", "auf", "aus", "bei", "bin", "bis", "bist", "da", "dadurch", "daher", "darum", "das", "da\u00df", "dass", "dein", "deine", "dem", "den", "der", "des", "dessen", "deshalb", "die", "dies", "dieser", "dieses", "doch", "dort", "du", "durch", "ein", "eine", "einem", "einen", "einer", "eines", "er", "es", "euer", "eure", "f\u00fcr", "hatte", "hatten", "hattest", "hattet", "hier", "hinter", "ich", "ihr", "ihre", "im", "in", "ist", "ja", +"jede", "jedem", "jeden", "jeder", "jedes", "jener", "jenes", "jetzt", "kann", "kannst", "k\u00f6nnen", "k\u00f6nnt", "machen", "mein", "meine", "mit", "mu\u00df", "mu\u00dft", "musst", "m\u00fcssen", "m\u00fc\u00dft", "nach", "nachdem", "nein", "nicht", "nun", "oder", "seid", "sein", "seine", "sich", "sie", "sind", "soll", "sollen", "sollst", "sollt", "sonst", "soweit", "sowie", "und", "unser", "unsere", "unter", "vom", "von", "vor", "wann", "warum", "was", "weiter", "weitere", "wenn", "wer", "werde", +"werden", "werdet", "weshalb", "wie", "wieder", "wieso", "wir", "wird", "wirst", "wo", "woher", "wohin", "zu", "zum", "zur", "\u00fcber"]; +var stemmer$$module$src$lang$at = {"niss":"", "isch":"", "lich":"", "heit":"", "keit":"", "end":"", "ung":"", "est":"", "ern":"", "em":"", "er":"", "en":"", "es":"", "st":"", "ig":"", "ik":"", "e":"", "s":""}; +var matcher$$module$src$lang$at = {}; +var $jscompDefaultExport$$module$src$lang$at = {filter:filter$$module$src$lang$at, stemmer:stemmer$$module$src$lang$at, matcher:matcher$$module$src$lang$at}; +var module$src$lang$at = {}; +module$src$lang$at.default = $jscompDefaultExport$$module$src$lang$at; +module$src$lang$at.filter = filter$$module$src$lang$at; +module$src$lang$at.matcher = matcher$$module$src$lang$at; +module$src$lang$at.stemmer = stemmer$$module$src$lang$at; +var filter$$module$src$lang$us = ["a", "about", "above", "after", "again", "against", "all", "also", "am", "an", "and", "any", "are", "aren't", "as", "at", "be", "because", "been", "before", "being", "below", "both", "but", "by", "can", "cannot", "can't", "come", "could", "couldn't", "did", "didn't", "do", "does", "doesn't", "doing", "dont", "down", "during", "each", "even", "few", "first", "for", "from", "further", "get", "go", "had", "hadn't", "has", "hasn't", "have", "haven't", "having", "he", +"hed", "her", "here", "here's", "hers", "herself", "hes", "him", "himself", "his", "how", "how's", "i", "id", "if", "ill", "im", "in", "into", "is", "isn't", "it", "it's", "itself", "i've", "just", "know", "let's", "like", "make", "me", "more", "most", "mustn't", "my", "myself", "new", "no", "nor", "not", "now", "of", "off", "on", "once", "only", "or", "other", "ought", "our", "our's", "ourselves", "out", "over", "own", "same", "say", "see", "shan't", "she", "she'd", "shell", "shes", "should", "shouldn't", +"so", "some", "such", "than", "that", "that's", "the", "their", "theirs", "them", "themselves", "then", "there", "there's", "these", "they", "they'd", "they'll", "they're", "they've", "this", "those", "through", "time", "to", "too", "until", "up", "us", "very", "want", "was", "wasn't", "way", "we", "wed", "well", "were", "weren't", "we've", "what", "what's", "when", "when's", "where", "where's", "which", "while", "who", "whom", "who's", "why", "why's", "will", "with", "won't", "would", "wouldn't", +"you", "you'd", "you'll", "your", "you're", "your's", "yourself", "yourselves", "you've"]; +var stemmer$$module$src$lang$us = {"ational":"ate", "iveness":"ive", "fulness":"ful", "ousness":"ous", "ization":"ize", "tional":"tion", "biliti":"ble", "icate":"ic", "ative":"", "alize":"al", "iciti":"ic", "entli":"ent", "ousli":"ous", "alism":"al", "ation":"ate", "aliti":"al", "iviti":"ive", "ement":"", "enci":"ence", "anci":"ance", "izer":"ize", "alli":"al", "ator":"ate", "logi":"log", "ical":"ic", "ance":"", "ence":"", "ness":"", "able":"", "ible":"", "ment":"", "eli":"e", "bli":"ble", "ful":"", +"ant":"", "ent":"", "ism":"", "ate":"", "iti":"", "ous":"", "ive":"", "ize":"", "al":"", "ou":"", "er":"", "ic":""}; +var matcher$$module$src$lang$us = {}; +var $jscompDefaultExport$$module$src$lang$us = {filter:filter$$module$src$lang$us, stemmer:stemmer$$module$src$lang$us, matcher:matcher$$module$src$lang$us}; +var module$src$lang$us = {}; +module$src$lang$us.default = $jscompDefaultExport$$module$src$lang$us; +module$src$lang$us.filter = filter$$module$src$lang$us; +module$src$lang$us.matcher = matcher$$module$src$lang$us; +module$src$lang$us.stemmer = stemmer$$module$src$lang$us; FlexSearch$$module$src$flexsearch.prototype.init; FlexSearch$$module$src$flexsearch.prototype.search; FlexSearch$$module$src$flexsearch.prototype.add; @@ -1640,11 +1803,46 @@ FlexSearch$$module$src$flexsearch.prototype.clear; FlexSearch$$module$src$flexsearch.prototype.destroy; FlexSearch$$module$src$flexsearch.prototype.export; FlexSearch$$module$src$flexsearch.prototype.import; -FlexSearch$$module$src$flexsearch.prototype.encode; -FlexSearch$$module$src$flexsearch.prototype.addMatcher; Promise.prototype.then; var module$src$export = {}; -if (SUPPORT_ENCODER) { +if (SUPPORT_ENCODER === true || SUPPORT_ENCODER && (SUPPORT_ENCODER === "latin" || SUPPORT_ENCODER.indexOf("latin:advanced") !== -1)) { + global_charset$$module$src$flexsearch["latin:advanced"] = $jscompDefaultExport$$module$src$lang$latin$advanced; +} +if (SUPPORT_ENCODER === true || SUPPORT_ENCODER && (SUPPORT_ENCODER === "latin" || SUPPORT_ENCODER.indexOf("latin:balance") !== -1)) { + global_charset$$module$src$flexsearch["latin:balance"] = $jscompDefaultExport$$module$src$lang$latin$balance; +} +if (SUPPORT_ENCODER === true || SUPPORT_ENCODER && (SUPPORT_ENCODER === "latin" || SUPPORT_ENCODER.indexOf("latin:default") !== -1)) { + global_charset$$module$src$flexsearch["latin:default"] = $jscompDefaultExport$$module$src$lang$latin$default; +} +if (SUPPORT_ENCODER === true || SUPPORT_ENCODER && (SUPPORT_ENCODER === "latin" || SUPPORT_ENCODER.indexOf("latin:extra") !== -1)) { + global_charset$$module$src$flexsearch["latin:extra"] = $jscompDefaultExport$$module$src$lang$latin$extra; +} +if (SUPPORT_ENCODER === true || SUPPORT_ENCODER && (SUPPORT_ENCODER === "latin" || SUPPORT_ENCODER.indexOf("latin:simple") !== -1)) { + global_charset$$module$src$flexsearch["latin:simple"] = $jscompDefaultExport$$module$src$lang$latin$simple; +} +if (SUPPORT_ENCODER === true || SUPPORT_ENCODER && (SUPPORT_ENCODER === "latin" || SUPPORT_ENCODER.indexOf("latin:soundex") !== -1)) { + global_charset$$module$src$flexsearch["latin:soundex"] = $jscompDefaultExport$$module$src$lang$latin$soundex; +} +if (SUPPORT_ENCODER === true || SUPPORT_ENCODER && (SUPPORT_ENCODER === "arabic" || SUPPORT_ENCODER.indexOf("arabic:default") !== -1)) { + global_charset$$module$src$flexsearch["arabic:default"] = $jscompDefaultExport$$module$src$lang$arabic$default; +} +if (SUPPORT_ENCODER === true || SUPPORT_ENCODER && (SUPPORT_ENCODER === "cjk" || SUPPORT_ENCODER.indexOf("cjk:default") !== -1)) { + global_charset$$module$src$flexsearch["cjk:default"] = $jscompDefaultExport$$module$src$lang$cjk$default; +} +if (SUPPORT_ENCODER === true || SUPPORT_ENCODER && (SUPPORT_ENCODER === "cyrillic" || SUPPORT_ENCODER.indexOf("cyrillic:default") !== -1)) { + global_charset$$module$src$flexsearch["cyrillic:default"] = $jscompDefaultExport$$module$src$lang$cyrillic$default; +} +if (SUPPORT_LANG === true || SUPPORT_LANG && SUPPORT_LANG.indexOf("de") !== -1) { + global_lang$$module$src$flexsearch["de"] = $jscompDefaultExport$$module$src$lang$de; +} +if (SUPPORT_LANG === true || SUPPORT_LANG && SUPPORT_LANG.indexOf("en") !== -1) { + global_lang$$module$src$flexsearch["en"] = $jscompDefaultExport$$module$src$lang$en; +} +if (SUPPORT_LANG === true || SUPPORT_LANG && SUPPORT_LANG.indexOf("at") !== -1) { + global_lang$$module$src$flexsearch["at"] = $jscompDefaultExport$$module$src$lang$at; +} +if (SUPPORT_LANG === true || SUPPORT_LANG && SUPPORT_LANG.indexOf("us") !== -1) { + global_lang$$module$src$flexsearch["us"] = $jscompDefaultExport$$module$src$lang$us; } (function() { var name = "FlexSearch"; diff --git a/dist/flexsearch.es5.js b/dist/flexsearch.es5.js index 49bd827..280d7f7 100644 --- a/dist/flexsearch.es5.js +++ b/dist/flexsearch.es5.js @@ -5,33 +5,33 @@ * Licence: Apache-2.0 * https://github.com/nextapps-de/flexsearch */ -(function(){'use strict';Object.assign||(Object.assign=function(){for(var a=arguments,b=a.length,c=a[0],e=1,d,h,f;ed;c--)f=h[c-1],h[c]=f,e[f]=c;h[d]=a;e[a]=d}}}return b};var Q={},da="undefined"!==typeof Blob&&"undefined"!==typeof URL&&URL.createObjectURL;function ea(a,b,c){var e=fa,d="flexsearch";e=da?URL.createObjectURL(new Blob(["("+e.toString()+")()"],{type:"text/javascript"})):d+".browser.js";d+="-"+a;Q[d]||(Q[d]=[]);Q[d][c]=new Worker(e);Q[d][c].onmessage=b;console.log("Register Worker: "+d+"@"+c);return Q[d][c]} -function fa(){var a,b;self.onmessage=function(c){if(c=c.data)if(c.search){var e=b.search(c.content,c.threshold?{limit:c.limit,threshold:c.threshold,where:c.where}:c.limit);self.postMessage({id:a,content:c.content,limit:c.limit,result:e})}else c.add?b.add(c.id,c.content):c.update?b.update(c.id,c.content):c.remove?b.remove(c.id):c.clear?b.clear():c.info?(c=b.info(),c.worker=a,console.log(c)):c.register&&(a=c.id,c.options.cache=!1,c.options.async=!1,c.options.worker=!1,b=(new Function(c.register.substring(c.register.indexOf("{")+ -1,c.register.lastIndexOf("}"))))(),b=new b(c.options))}}function ha(a,b,c,e){a=ea("id"+a,function(h){(h=h.data)&&h.result&&e(h.id,h.content,h.result,h.limit,h.where,h.cursor,h.suggest)},b);var d=K.toString();c.id=b;a.postMessage({register:d,options:c,id:b});return a}K.prototype.H=function(a,b,c,e){this.v!==this.u&&(this.s=this.s.concat(c),this.v++,e&&this.s.length>=e&&(this.v=this.u),this.v===this.u&&(this.cache&&this.f.set(b,this.s),this.D&&this.D(this.s)));return this};var S={memory:{encode:"extra",i:"strict",threshold:0,c:1},speed:{encode:"icase",i:"strict",threshold:1,c:3,depth:2},match:{encode:"extra",i:"full",threshold:1,c:3},score:{encode:"extra",i:"strict",threshold:1,c:9,depth:4},balance:{encode:"balance",i:"strict",threshold:0,c:3,depth:3},fast:{encode:"icase",i:"strict",threshold:8,c:9,depth:1}};var ia={encode:function(a){return a.toLowerCase()},i:"strict",split:/[\W_]+/,cache:!1,async:!1,u:!1,A:!1,a:!1,c:9,threshold:0,depth:0},ja=0,T={};function K(a){if(!(this instanceof K))return new K(a);var b=a&&a.id;this.id=b||0===b?b:ja++;this.init(a);ka(this,"index",function(){return Object.keys(this.g)});ka(this,"length",function(){return this.index.length})}K.registerCharset=function(a,b,c,e){a=T[a]||(T[a]={});a.w=b;a.split=c;a.A=e;return K}; -K.registerLanguage=function(a,b,c,e){a=T[a]||(T[a]={});a.filter=b;a.B=c;a.o=e;return K}; -K.prototype.init=function(a){this.o=[];var b,c;if(w(a))S[a]||console.warn("Preset not found: "+a),a=S[a];else if(b=a.preset)S[b]||console.warn("Preset not found: "+b),a=Object.assign({},S[b],a);this.w||(a?a=Object.assign({},ia,a):a=ia);if(a){if(b=a.worker){if("undefined"===typeof ea)a.worker=!1,this.F=null;else{var e=parseInt(b,10)||4;this.v=0;this.s=[];this.D=null;this.F=Array(e);for(c=0;cu;z--)t=l.substring(u,z),V(r,d,t,a,x,v,g,n-1);break;default:if(m=V(r,d,l,a,1,v,g,n-1),k&&1=g)for(m=d._ctx[l]||(d._ctx[l]=G()),l=this.h[l]||(this.h[l]=ba(n-(g||0))),v= -p-k,t=p+k+1,0>v&&(v=0),t>f&&(t=f);v=f&&(a=a[g-(d+.5>>0)],a=a[c]||(a[c]=[]),a[a.length]=e);return d} -function W(a,b){if(a)for(var c=Object.keys(a),e=0,d=c.length;ef&&(k=0);k=k||0;var J=k+b;Jd;c--)f=g[c-1],g[c]=f,e[f]=c;g[d]=a;e[a]=d}}}return b};var S={},da="undefined"!==typeof Blob&&"undefined"!==typeof URL&&URL.createObjectURL;function fa(a,b,c){var e=ha,d="flexsearch";e=da?URL.createObjectURL(new Blob(["("+e.toString()+")()"],{type:"text/javascript"})):d+".browser.js";d+="-"+a;S[d]||(S[d]=[]);S[d][c]=new Worker(e);S[d][c].onmessage=b;console.log("Register Worker: "+d+"@"+c);return S[d][c]} +function ha(){var a,b;self.onmessage=function(c){if(c=c.data)if(c.search){var e=b.search(c.content,c.threshold?{limit:c.limit,threshold:c.threshold,where:c.where}:c.limit);self.postMessage({id:a,content:c.content,limit:c.limit,result:e})}else c.add?b.add(c.id,c.content):c.update?b.update(c.id,c.content):c.remove?b.remove(c.id):c.clear?b.clear():c.info?(c=b.info(),c.worker=a,console.log(c)):c.register&&(a=c.id,c.options.cache=!1,c.options.async=!1,c.options.worker=!1,b=(new Function(c.register.substring(c.register.indexOf("{")+ +1,c.register.lastIndexOf("}"))))(),b=new b(c.options))}}function ia(a,b,c,e){a=fa("id"+a,function(g){(g=g.data)&&g.result&&e(g.id,g.content,g.result,g.limit,g.where,g.cursor,g.suggest)},b);var d=M.toString();c.id=b;a.postMessage({register:d,options:c,id:b});return a}M.prototype.G=function(a,b,c,e){this.v!==this.A&&(this.s=this.s.concat(c),this.v++,e&&this.s.length>=e&&(this.v=this.A),this.v===this.A&&(this.cache&&this.f.set(b,this.s),this.C&&this.C(this.s)));return this};var U={memory:{encode:"extra",j:"strict",threshold:0,h:1},speed:{encode:"icase",j:"strict",threshold:1,h:3,depth:2},match:{encode:"extra",j:"full",threshold:1,h:3},score:{encode:"extra",j:"strict",threshold:1,h:9,depth:4},balance:{encode:"balance",j:"strict",threshold:0,h:3,depth:3},fast:{encode:"icase",j:"strict",threshold:8,h:9,depth:1}};var ka={encode:ja,c:!1},la=/[\W_]+/;function ja(a){return L(this,a.toLowerCase(),!1,la)};var ma={encode:ja,tokenize:"strict",cache:!1,async:!1,worker:!1,rtl:!1,doc:!1,resolution:9,threshold:0,depth:0},na=0,oa={},V={};function M(a){if(!(this instanceof M))return new M(a);var b=a&&a.id;this.id=b||0===b?b:na++;this.init(a);pa(this,"index",function(){return Object.keys(this.g)});pa(this,"length",function(){return this.index.length})}M.registerCharset=function(a,b){V[a]=b;return M};M.registerLanguage=function(a,b){V[a]=b;return M}; +M.prototype.init=function(a){var b,c;if(r(a))U[a]||console.warn("Preset not found: "+a),a=U[a];else if(b=a.preset)U[b]||console.warn("Preset not found: "+b),a=Object.assign({},U[b],a);this.encode||(a?a=Object.assign({},ma,a):a=ma);if(a){if(b=a.worker){if("undefined"===typeof fa)a.worker=!1,this.D=null;else{var e=parseInt(b,10)||4;this.v=0;this.s=[];this.C=null;this.D=Array(e);for(c=0;cv;A--)u=l.substring(v,A),X(t,d,u,a,y,w,h,m-1);break;default:if(n=X(t,d,l,a,1,w,h,m-1),k&&1=h)for(n=d._ctx[l]||(d._ctx[l]=D()),l=this.i[l]||(this.i[l]=ba(m-(h||0))),w=p-k,u=p+ +k+1,0>w&&(w=0),u>f&&(u=f);w=f&&(a=a[h-(d+.5>>0)],a=a[c]||(a[c]=[]),a[a.length]=e);return d} +function sa(a,b){if(a)for(var c=Object.keys(a),e=0,d=c.length;ef&&(k=0);k=k||0;var K=k+b;Kk;v--)r=p.substring(k,v),M(e,c,r,a,t,m,d,g-1);break;default:if(l=M(e,c,p,a,1,m,d,g-1),h&&1=d)for(l=c._ctx[p]||(c._ctx[p]=A()),p=this.b[p]||(this.b[p]=y(g-(d||0))),m=q-h,r=q+h+1,0>m&&(m=0),r>f&&(r=f);mz&&(e=0);B=e||0;var D=B+b;D=g&&(a=a[e-(d+.5>>0)],a=a[c]||(a[c]=[]),a[a.length]=f);return d}function N(a,b){if(a)for(var c=Object.keys(a),f=0,d=c.length;fk;u--)r=q.substring(k,u),N(f,c,r,a,t,n,d,g-1);break;default:if(m=N(f,c,q,a,1,n,d,g-1),h&&1=d)for(m=c._ctx[q]||(c._ctx[q]=z()),q=this.b[q]||(this.b[q]=y(g-(d||0))),n=l-h,r=l+h+1,0>n&&(n=0),r>e&&(r=e);nx&&(f=0);A=f||0;var D=A+b;D=g&&(a=a[f-(d+.5>>0)],a=a[c]||(a[c]=[]),a[a.length]=e);return d}function O(a,b){if(a)for(var c=Object.keys(a),e=0,d=c.length;ed;b--)f=h[b-1],h[b]=f,e[f]=b;h[d]=a;e[a]=d}}}return c};var Q={},ca="undefined"!==typeof Blob&&"undefined"!==typeof URL&&URL.createObjectURL;function da(a,c,b){var e=ea,d="flexsearch";e=ca?URL.createObjectURL(new Blob(["("+e.toString()+")()"],{type:"text/javascript"})):d+".browser.js";d+="-"+a;Q[d]||(Q[d]=[]);Q[d][b]=new Worker(e);Q[d][b].onmessage=c;return Q[d][b]} -function ea(){var a,c;self.onmessage=function(b){if(b=b.data)if(b.search){var e=c.search(b.content,b.threshold?{limit:b.limit,threshold:b.threshold,where:b.where}:b.limit);self.postMessage({id:a,content:b.content,limit:b.limit,result:e})}else b.add?c.add(b.id,b.content):b.update?c.update(b.id,b.content):b.remove?c.remove(b.id):b.clear?c.clear():b.info?(b=c.info(),b.worker=a,console.log(b)):b.register&&(a=b.id,b.options.cache=!1,b.options.async=!1,b.options.worker=!1,c=(new Function(b.register.substring(b.register.indexOf("{")+ -1,b.register.lastIndexOf("}"))))(),c=new c(b.options))}}function fa(a,c,b,e){a=da("id"+a,function(h){(h=h.data)&&h.result&&e(h.id,h.content,h.result,h.limit,h.where,h.cursor,h.suggest)},c);var d=K.toString();b.id=c;a.postMessage({register:d,options:b,id:c});return a}K.prototype.H=function(a,c,b,e){this.v!==this.u&&(this.s=this.s.concat(b),this.v++,e&&this.s.length>=e&&(this.v=this.u),this.v===this.u&&(this.cache&&this.f.set(c,this.s),this.D&&this.D(this.s)));return this};var ha={memory:{encode:"extra",i:"strict",threshold:0,c:1},speed:{encode:"icase",i:"strict",threshold:1,c:3,depth:2},match:{encode:"extra",i:"full",threshold:1,c:3},score:{encode:"extra",i:"strict",threshold:1,c:9,depth:4},balance:{encode:"balance",i:"strict",threshold:0,c:3,depth:3},fast:{encode:"icase",i:"strict",threshold:8,c:9,depth:1}};var ia={encode:function(a){return a.toLowerCase()},i:"strict",split:/[\W_]+/,cache:!1,async:!1,u:!1,A:!1,a:!1,c:9,threshold:0,depth:0},ja=0,S={};function K(a){if(!(this instanceof K))return new K(a);var c=a&&a.id;this.id=c||0===c?c:ja++;this.init(a);ka(this,"index",function(){return Object.keys(this.g)});ka(this,"length",function(){return this.index.length})}K.registerCharset=function(a,c,b,e){a=S[a]||(S[a]={});a.w=c;a.split=b;a.A=e;return K}; -K.registerLanguage=function(a,c,b,e){a=S[a]||(S[a]={});a.filter=c;a.B=b;a.o=e;return K}; -K.prototype.init=function(a){this.o=[];var c,b;if(w(a))a=ha[a];else if(c=a.preset)a=Object.assign({},ha[c],a);this.w||(a?a=Object.assign({},ia,a):a=ia);if(a){if(c=a.worker){if("undefined"===typeof da)a.worker=!1,this.F=null;else{var e=parseInt(c,10)||4;this.v=0;this.s=[];this.D=null;this.F=Array(e);for(b=0;bu;z--)t=l.substring(u,z),U(r,d,t,a,x,v,g,n-1);break;default:if(m=U(r,d,l,a,1,v,g,n-1),k&&1=g)for(m=d._ctx[l]||(d._ctx[l]=G()),l=this.h[l]||(this.h[l]=aa(n-(g||0))),v= -p-k,t=p+k+1,0>v&&(v=0),t>f&&(t=f);v=f&&(a=a[g-(d+.5>>0)],a=a[b]||(a[b]=[]),a[a.length]=e);return d} -function V(a,c){if(a)for(var b=Object.keys(a),e=0,d=b.length;ef&&(k=0);k=k||0;var J=k+c;Jd;c--)f=g[c-1],g[c]=f,e[f]=c;g[d]=a;e[a]=d}}}return b};var U={},ca="undefined"!==typeof Blob&&"undefined"!==typeof URL&&URL.createObjectURL;function ea(a,b,c){var e=fa,d="flexsearch";e=ca?URL.createObjectURL(new Blob(["("+e.toString()+")()"],{type:"text/javascript"})):d+".browser.js";d+="-"+a;U[d]||(U[d]=[]);U[d][c]=new Worker(e);U[d][c].onmessage=b;return U[d][c]} +function fa(){var a,b;self.onmessage=function(c){if(c=c.data)if(c.search){var e=b.search(c.content,c.threshold?{limit:c.limit,threshold:c.threshold,where:c.where}:c.limit);self.postMessage({id:a,content:c.content,limit:c.limit,result:e})}else c.add?b.add(c.id,c.content):c.update?b.update(c.id,c.content):c.remove?b.remove(c.id):c.clear?b.clear():c.info?(c=b.info(),c.worker=a,console.log(c)):c.register&&(a=c.id,c.options.cache=!1,c.options.async=!1,c.options.worker=!1,b=(new Function(c.register.substring(c.register.indexOf("{")+ +1,c.register.lastIndexOf("}"))))(),b=new b(c.options))}}function ha(a,b,c,e){a=ea("id"+a,function(g){(g=g.data)&&g.result&&e(g.id,g.content,g.result,g.limit,g.where,g.cursor,g.suggest)},b);var d=O.toString();c.id=b;a.postMessage({register:d,options:c,id:b});return a}O.prototype.G=function(a,b,c,e){this.v!==this.A&&(this.s=this.s.concat(c),this.v++,e&&this.s.length>=e&&(this.v=this.A),this.v===this.A&&(this.cache&&this.f.set(b,this.s),this.C&&this.C(this.s)));return this};var ia={memory:{encode:"extra",j:"strict",threshold:0,h:1},speed:{encode:"icase",j:"strict",threshold:1,h:3,depth:2},match:{encode:"extra",j:"full",threshold:1,h:3},score:{encode:"extra",j:"strict",threshold:1,h:9,depth:4},balance:{encode:"balance",j:"strict",threshold:0,h:3,depth:3},fast:{encode:"icase",j:"strict",threshold:8,h:9,depth:1}};var ka={encode:ja,c:!1},la=/[\W_]+/;function ja(a){return M(this,a.toLowerCase(),!1,la)};var ma={encode:ja,tokenize:"strict",cache:!1,async:!1,worker:!1,rtl:!1,doc:!1,resolution:9,threshold:0,depth:0},na=0,oa={},V={};function O(a){if(!(this instanceof O))return new O(a);var b=a&&a.id;this.id=b||0===b?b:na++;this.init(a);pa(this,"index",function(){return Object.keys(this.g)});pa(this,"length",function(){return this.index.length})}O.registerCharset=function(a,b){V[a]=b;return O};O.registerLanguage=function(a,b){V[a]=b;return O}; +O.prototype.init=function(a){var b,c;if(r(a))a=ia[a];else if(b=a.preset)a=Object.assign({},ia[b],a);this.encode||(a?a=Object.assign({},ma,a):a=ma);if(a){if(b=a.worker){if("undefined"===typeof ea)a.worker=!1,this.D=null;else{var e=parseInt(b,10)||4;this.v=0;this.s=[];this.C=null;this.D=Array(e);for(c=0;cv;A--)u=l.substring(v,A),X(t,d,u,a,y,w,h,m-1);break;default:if(n=X(t,d,l,a,1,w,h,m-1),k&&1=h)for(n=d._ctx[l]||(d._ctx[l]=G()),l=this.i[l]||(this.i[l]=aa(m-(h||0))),w=p-k,u=p+ +k+1,0>w&&(w=0),u>f&&(u=f);w=f&&(a=a[h-(d+.5>>0)],a=a[c]||(a[c]=[]),a[a.length]=e);return d} +function sa(a,b){if(a)for(var c=Object.keys(a),e=0,d=c.length;ef&&(k=0);k=k||0;var K=k+b;Kd;c--)f=h[c-1],h[c]=f,e[f]=c;h[d]=a;e[a]=d}}}return b};var ba={memory:{encode:"extra",i:"strict",threshold:0,c:1},speed:{encode:"icase",i:"strict",threshold:1,c:3,depth:2},match:{encode:"extra",i:"full",threshold:1,c:3},score:{encode:"extra",i:"strict",threshold:1,c:9,depth:4},balance:{encode:"balance",i:"strict",threshold:0,c:3,depth:3},fast:{encode:"icase",i:"strict",threshold:8,c:9,depth:1}};var ca={encode:function(a){return a.toLowerCase()},i:"strict",split:/[\W_]+/,cache:!1,async:!1,B:!1,u:!1,a:!1,c:9,threshold:0,depth:0},da=0,S={};function L(a){if(!(this instanceof L))return new L(a);var b=a&&a.id;this.id=b||0===b?b:da++;this.init(a);ea(this,"index",function(){return Object.keys(this.f)});ea(this,"length",function(){return this.index.length})}L.registerCharset=function(a,b,c,e){a=S[a]||(S[a]={});a.s=b;a.split=c;a.u=e;return L}; -L.registerLanguage=function(a,b,c,e){a=S[a]||(S[a]={});a.filter=b;a.v=c;a.m=e;return L}; -L.prototype.init=function(a){this.m=[];var b;if(w(a))a=ba[a];else if(b=a.preset)a=Object.assign({},ba[b],a);this.s||(a?a=Object.assign({},ca,a):a=ca);if(a){var c=a.charset;var e=a.lang;this.h=a.tokenize;this.split=w(b=c||a.split)?S[b]?S[b].split:new RegExp(b,"g"):b;this.u=w(b=c||a.rtl)?S[b].u:b;this.async=a.async;this.threshold=a.threshold;this.c=(b=a.resolution)<=this.threshold?this.threshold+1:b;this.depth="strict"===this.h&&a.depth||0;this.s=w(b=c||a.encode)?S[-1===b.indexOf(":")?b+":default": -b].encode:b;if(c=b=e||a.matcher){b=w(b)?S[b].m:b;c=Object.keys(b);for(var d=c.length,h=Array(2*d),f=0,g=0;fu;z--)t=l.substring(u,z),U(r,d,t,a,x,v,g,n-1);break;default:if(m=U(r,d,l,a,1,v,g,n-1),k&&1=g)for(m=d._ctx[l]||(d._ctx[l]=K()),l=this.g[l]||(this.g[l]=G(n-(g||0))),v=p-k,t=p+k+1,0>v&&(v=0),t>f&&(t=f);v=f&&(a=a[g-(d+.5>>0)],a=a[c]||(a[c]=[]),a[a.length]=e);return d} -function V(a,b){if(a)for(var c=Object.keys(a),e=0,d=c.length;ef&&(k=0);k=k||0;var J=k+b;Jd;c--)f=h[c-1],h[c]=f,e[f]=c;h[d]=a;e[a]=d}}}return b};var da={memory:{encode:"extra",i:"strict",threshold:0,g:1},speed:{encode:"icase",i:"strict",threshold:1,g:3,depth:2},match:{encode:"extra",i:"full",threshold:1,g:3},score:{encode:"extra",i:"strict",threshold:1,g:9,depth:4},balance:{encode:"balance",i:"strict",threshold:0,g:3,depth:3},fast:{encode:"icase",i:"strict",threshold:8,g:9,depth:1}};var fa={encode:ea,c:!1},ha=/[\W_]+/;function ea(a){return M(this,a.toLowerCase(),!1,ha)};var ia={encode:ea,tokenize:"strict",cache:!1,async:!1,worker:!1,rtl:!1,doc:!1,resolution:9,threshold:0,depth:0},ja=0,U={},V={};function O(a){if(!(this instanceof O))return new O(a);var b=a&&a.id;this.id=b||0===b?b:ja++;this.init(a);ka(this,"index",function(){return Object.keys(this.f)});ka(this,"length",function(){return this.index.length})}O.registerCharset=function(a,b){V[a]=b;return O};O.registerLanguage=function(a,b){V[a]=b;return O}; +O.prototype.init=function(a){var b;if(r(a))a=da[a];else if(b=a.preset)a=Object.assign({},da[b],a);this.encode||(a?a=Object.assign({},ia,a):a=ia);if(a){this.async=a.async;var c=a.charset;var e=a.lang;this.v=(r(c)?V[c].i:c&&c.i)||a.tokenize;this.c=r(b=a.rtl||c)?V[b].c:c&&c.c||b;this.threshold=a.threshold;this.g=(b=a.resolution)<=this.threshold?this.threshold+1:b;this.depth="strict"===this.v&&a.depth||0;this.encode=r(b=a.encode||c)?V[-1===b.indexOf(":")?b+":default":b].encode:c&&c.encode||b;this.o=(b= +a.matcher||e)&&la(r(b)?U[b].o:e&&e.o||b,!1);if(c=b=a.filter||e){c=r(b)?U[b].filter:e&&e.filter||b;for(var d=G(),h=0,f=c.length;hv;A--)u=l.substring(v,A),X(t,d,u,a,x,w,g,m-1);break;default:if(n=X(t,d,l,a,1,w,g,m-1),k&&1=g)for(n=d._ctx[l]||(d._ctx[l]=G()),l=this.h[l]||(this.h[l]=aa(m-(g||0))),w=p-k,u=p+k+1,0>w&&(w=0),u>f&&(u=f);w=f&&(a=a[g-(d+.5>>0)],a=a[c]||(a[c]=[]),a[a.length]=e);return d} +function na(a,b){if(a)for(var c=Object.keys(a),e=0,d=c.length;ef&&(k=0);k=k||0;var K=k+b;K v; A--) { - u = l.substring(v, A), W(r, d, u, a, y, w, g, m - 1); + u = m.substring(v, A), W(r, d, u, a, y, w, g, l - 1); } } break; default: - if (p = W(r, d, l, a, 1, w, g, m - 1), k && 1 < f && p >= g) { - for (p = d._ctx[l] || (d._ctx[l] = H()), l = this._ctx[l] || (this._ctx[l] = F(m - (g || 0))), w = n - k, u = n + k + 1, 0 > w && (w = 0), u > f && (u = f); w < u; w++) { - w !== n && W(l, p, c[w], a, 0, m - (w < n ? n - w : w - n), g, m - 1); + if (p = W(r, d, m, a, 1, w, g, l - 1), k && 1 < f && p >= g) { + for (p = d._ctx[m] || (d._ctx[m] = F()), m = this._ctx[m] || (this._ctx[m] = aa(l - (g || 0))), w = n - k, u = n + k + 1, 0 > w && (w = 0), u > f && (u = f); w < u; w++) { + w !== n && W(m, p, c[w], a, 0, l - (w < n ? n - w : w - n), g, l - 1); } } } @@ -505,7 +460,7 @@ R.prototype.add = function(a, b, c, e, d) { } return this; }; -R.prototype.handle_docs = function(a, b, c) { +O.prototype.handle_docs = function(a, b, c) { if (x(b)) { var e = b.length; if (e--) { @@ -518,48 +473,48 @@ R.prototype.handle_docs = function(a, b, c) { var h = this.doc.index, f = this.doc.keys, g = this.doc.tag; d = this.doc.store; var k; - var m = this.doc.id; + var l = this.doc.id; e = b; - for (var r = 0; r < m.length; r++) { - e = e[m[r]]; + for (var r = 0; r < l.length; r++) { + e = e[l[r]]; } - if ("remove" === a && (delete this._doc[e], m = f.length, m--)) { - for (b = 0; b < m; b++) { + if ("remove" === a && (delete this._doc[e], l = f.length, l--)) { + for (b = 0; b < l; b++) { h[f[b]].remove(e); } - return h[f[m]].remove(e, c); + return h[f[l]].remove(e, c); } if (g) { for (k = 0; k < g.length; k++) { var t = g[k]; var n = b; - m = t.split(":"); - for (r = 0; r < m.length; r++) { - n = n[m[r]]; + l = t.split(":"); + for (r = 0; r < l.length; r++) { + n = n[l[r]]; } n = "@" + n; } k = this._tag[t]; k = k[n] || (k[n] = []); } - m = this.doc.field; + l = this.doc.field; g = 0; - for (t = m.length; g < t; g++) { - r = m[g]; + for (t = l.length; g < t; g++) { + r = l[g]; n = b; - for (var l = 0; l < r.length; l++) { - n = n[r[l]]; + for (var m = 0; m < r.length; m++) { + n = n[r[m]]; } r = h[f[g]]; "add" === a ? r.add(e, n, g === t - 1 && c) : r.update(e, n, g === t - 1 && c); } if (d) { c = Object.keys(d); - a = H(); + a = F(); for (h = 0; h < c.length; h++) { if (f = c[h], d[f]) { - for (f = f.split(":"), g = m = void 0, t = 0; t < f.length; t++) { - n = f[t], m = (m || b)[n], g = (g || a)[n] = m; + for (f = f.split(":"), g = l = void 0, t = 0; t < f.length; t++) { + n = f[t], l = (l || b)[n], g = (g || a)[n] = l; } } } @@ -570,14 +525,14 @@ R.prototype.handle_docs = function(a, b, c) { } return this; }; -R.prototype.update = function(a, b, c) { +O.prototype.update = function(a, b, c) { if (this.doc && B(a)) { return this.handle_docs("update", a, b); } this._ids[a] && q(b) && (this.remove(a), this.add(a, b, c, !0)); return this; }; -R.prototype.remove = function(a, b, c) { +O.prototype.remove = function(a, b, c) { if (this.doc && B(a)) { return this.handle_docs("remove", a, b); } @@ -613,8 +568,8 @@ R.prototype.remove = function(a, b, c) { return this; }; var Y; -R.prototype.merge_and_sort = function(a, b, c, e, d, h, f, g, k, m) { - c = ea(c, f ? 0 : d, g, h, b, k, m); +O.prototype.merge_and_sort = function(a, b, c, e, d, h, f, g, k, l) { + c = la(c, f ? 0 : d, g, h, b, k, l); if (g) { g = c.page; var r = c.next; @@ -632,12 +587,12 @@ R.prototype.merge_and_sort = function(a, b, c, e, d, h, f, g, k, m) { } c = h; } - e && (z(e) || (Y = e.split(":"), 1 < Y.length ? e = fa : (Y = Y[0], e = ha)), c.sort(e)); + e && (z(e) || (Y = e.split(":"), 1 < Y.length ? e = ma : (Y = Y[0], e = na)), c.sort(e)); c = Z(g, r, c); this._cache && this._cache.set(a, c); return c; }; -R.prototype.search = function(a, b, c, e) { +O.prototype.search = function(a, b, c, e) { if (B(b)) { if (x(b)) { for (var d = 0; d < b.length; d++) { @@ -657,30 +612,30 @@ R.prototype.search = function(a, b, c, e) { var g = a.sort; var k = a.page; b = a.limit; - var m = a.threshold; + var l = a.threshold; var r = a.suggest; a = a.query; } if (this.doc) { - m = this.doc.index; - var t = f.where, n = f.bool || "or", l = f.field, p = n, w, u; - if (l) { - x(l) || (l = [l]); + l = this.doc.index; + var t = f.where, n = f.bool || "or", m = f.field, p = n, w, u; + if (m) { + x(m) || (m = [m]); } else { if (x(f)) { var v = f; - l = []; + m = []; p = []; for (var y = 0; y < f.length; y++) { - e = f[y], d = e.bool || n, l[y] = e.field, p[y] = d, "not" === d ? w = !0 : "and" === d && (u = !0); + e = f[y], d = e.bool || n, m[y] = e.field, p[y] = d, "not" === d ? w = !0 : "and" === d && (u = !0); } } else { - l = this.doc.keys; + m = this.doc.keys; } } - n = l.length; + n = m.length; for (y = 0; y < n; y++) { - v && (f = v[y]), k && !q(f) && (f.page = null, f.limit = 0), h[y] = m[l[y]].search(f, 0); + v && (f = v[y]), k && !q(f) && (f.page = null, f.limit = 0), h[y] = l[m[y]].search(f, 0); } if (c) { return c(this.merge_and_sort(a, p, h, g, b, r, t, k, u, w)); @@ -695,20 +650,20 @@ R.prototype.search = function(a, b, c, e) { } return this.merge_and_sort(a, p, h, g, b, r, t, k, u, w); } - m || (m = this.threshold || 0); + l || (l = this.threshold || 0); if (!e) { if (this.async && "function" !== typeof importScripts) { - var G = this; - m = new Promise(function(a) { + var H = this; + l = new Promise(function(a) { setTimeout(function() { - a(G.search(f, b, null, !0)); - G = null; + a(H.search(f, b, null, !0)); + H = null; }); }); if (c) { - m.then(c); + l.then(c); } else { - return m; + return l; } return this; } @@ -733,69 +688,69 @@ R.prototype.search = function(a, b, c, e) { if (!f.length) { return h; } - c = this.tokenize(f); + c = f; v = c.length; e = !0; d = []; - var O = H(), P = 0; - 1 < v && (this.depth ? n = !0 : c.sort(ia)); + var P = F(), Q = 0; + 1 < v && (this.depth ? n = !0 : c.sort(oa)); if (!n || (y = this._ctx)) { - for (var S = this.resolution; P < v; P++) { - var D = c[P]; + for (var T = this.resolution; Q < v; Q++) { + var D = c[Q]; if (D) { if (n) { - if (!l) { + if (!m) { if (y[D]) { - l = D, O[D] = 1; + m = D, P[D] = 1; } else { if (!r) { return h; } } } - if (r && P === v - 1 && !d.length) { - n = !1, D = l || D, O[D] = 0; + if (r && Q === v - 1 && !d.length) { + n = !1, D = m || D, P[D] = 0; } else { - if (!l) { + if (!m) { continue; } } } - if (!O[D]) { - var E = [], N = !1, I = 0, J = n ? y[l] : this._map; + if (!P[D]) { + var E = [], N = !1, I = 0, J = n ? y[m] : this._map; if (J) { - for (var Q = void 0, K = 0; K < S - m; K++) { - if (Q = J[K] && J[K][D]) { - E[I++] = Q, N = !0; + for (var R = void 0, K = 0; K < T - l; K++) { + if (R = J[K] && J[K][D]) { + E[I++] = R, N = !0; } } } if (N) { - l = D, d[d.length] = 1 < I ? E.concat.apply([], E) : E[0]; + m = D, d[d.length] = 1 < I ? E.concat.apply([], E) : E[0]; } else { if (!r) { e = !1; break; } } - O[D] = 1; + P[D] = 1; } } } } else { e = !1; } - e && (h = ea(d, b, k, r)); + e && (h = la(d, b, k, r)); this._cache && this._cache.set(a, h); return h; }; -R.prototype.info = function() { +O.prototype.info = function() { return {id:this.id, items:this.length, matcher:this.matcher.length, worker:this.worker, threshold:this.threshold, depth:this.depth, resolution:this.resolution, contextual:this.depth && "strict" === this.tokenizer}; }; -R.prototype.clear = function() { +O.prototype.clear = function() { return this.destroy().init(); }; -R.prototype.destroy = function() { +O.prototype.destroy = function() { this._cache && (this._cache.clear(), this._cache = null); this._map = this._ctx = this._ids = null; if (this.doc) { @@ -806,7 +761,7 @@ R.prototype.destroy = function() { } return this; }; -function ca(a, b, c) { +function ia(a, b, c) { Object.defineProperty(a, b, {get:c}); } function W(a, b, c, e, d, h, f, g) { @@ -835,30 +790,21 @@ function X(a, b) { } } } -R.prototype.encode = function(a) { - a && this.encoder && (a = this.encoder(a)); - a && this.matcher.length && (a = L(a, this.matcher)); - a && this.stemmer && (a = L(a, this.stemmer)); - return a; -}; -R.prototype.tokenize = function(a) { - a = x(a) ? a : z(this.tokenizer) ? this.tokenizer(a) : a.split(this.split); - if (this.filter) { - for (var b = this.filter, c = a.length, e = z(b), d = [], h = 0, f = 0; h < c; h++) { - var g = a[h]; - g && (e && b(g) || !e && !b[g]) && (d[f++] = g); - } - a = d; +function ja(a, b) { + for (var c = Object.keys(a), e = c.length, d = [], h = "", f = 0, g = 0, k; g < e; g++) { + var l = c[g]; + (k = a[l]) ? (d[f++] = L(b ? "(?!\\b)" + l + "(\\b)" : l), d[f++] = k) : h += (h ? "|" : "") + l; } - return a; -}; -function ia(a, b) { + h && (d[f++] = L(b ? "(?!\\b)(" + h + ")(\\b)" : "(" + h + ")"), d[f] = ""); + return d; +} +function oa(a, b) { return b.length - a.length; } -function ha(a, b) { +function na(a, b) { return a[Y] - b[Y]; } -function fa(a, b) { +function ma(a, b) { for (var c = Y.length, e = 0; e < c; e++) { a = a[Y[e]], b = b[Y[e]]; } @@ -867,7 +813,7 @@ function fa(a, b) { function Z(a, b, c) { return a ? {page:a, next:b ? "" + b : null, result:c} : c; } -function ea(a, b, c, e, d, h, f) { +function la(a, b, c, e, d, h, f) { var g = []; if (!0 === c) { c = "0"; @@ -875,9 +821,9 @@ function ea(a, b, c, e, d, h, f) { } else { k = c && c.split(":"); } - var m = a.length; - if (1 < m) { - var r = H(), t = [], n, l = 0, p, w = !0, u = 0, v; + var l = a.length; + if (1 < l) { + var r = F(), t = [], n, m = 0, p, w = !0, u = 0, v; if (k) { if (2 === k.length) { var y = k; @@ -887,39 +833,39 @@ function ea(a, b, c, e, d, h, f) { } } if (f) { - for (n = H(); l < m; l++) { - if ("not" === d[l]) { - var A = a[l]; - var G = A.length; - for (p = 0; p < G; p++) { + for (n = F(); m < l; m++) { + if ("not" === d[m]) { + var A = a[m]; + var H = A.length; + for (p = 0; p < H; p++) { n["@" + A[p]] = 1; } } else { - var O = l + 1; + var P = m + 1; } } - if (C(O)) { + if (C(P)) { return Z(c, K, g); } - l = 0; + m = 0; } else { - var P = q(d) && d; + var Q = q(d) && d; } - for (var S; l < m; l++) { - var D = l === (O || m) - 1; - if (!P || !l) { - if ((p = P || d && d[l]) && "and" !== p) { + for (var T; m < l; m++) { + var D = m === (P || l) - 1; + if (!Q || !m) { + if ((p = Q || d && d[m]) && "and" !== p) { if ("or" === p) { - S = !1; + T = !1; } else { continue; } } else { - S = h = !0; + T = h = !0; } } - A = a[l]; - if (G = A.length) { + A = a[m]; + if (H = A.length) { if (w) { if (I) { var E = I.length; @@ -936,11 +882,11 @@ function ea(a, b, c, e, d, h, f) { } } N = !1; - for (p = 0; p < G; p++) { + for (p = 0; p < H; p++) { E = A[p]; - var J = "@" + E, Q = h ? r[J] || 0 : l; - if (!(!Q && !e || f && n[J] || !h && r[J])) { - if (Q === l) { + var J = "@" + E, R = h ? r[J] || 0 : m; + if (!(!R && !e || f && n[J] || !h && r[J])) { + if (R === m) { if (D) { if (!v || --v < u) { if (g[u++] = E, b && u === b) { @@ -948,26 +894,26 @@ function ea(a, b, c, e, d, h, f) { } } } else { - r[J] = l + 1; + r[J] = m + 1; } N = !0; } else { - e && (J = t[Q] || (t[Q] = []), J[J.length] = E); + e && (J = t[R] || (t[R] = []), J[J.length] = E); } } } - if (S && !N && !e) { + if (T && !N && !e) { break; } } else { - if (S && !e) { + if (T && !e) { return Z(c, K, A); } } } if (I) { - if (l = I.length, f) { - for (p = k ? parseInt(k, 10) : 0; p < l; p++) { + if (m = I.length, f) { + for (p = k ? parseInt(k, 10) : 0; p < m; p++) { a = I[p], n["@" + a] || (g[u++] = a); } } else { @@ -975,12 +921,12 @@ function ea(a, b, c, e, d, h, f) { } } if (e) { - for (u = g.length, y ? (l = parseInt(y[0], 10) + 1, p = parseInt(y[1], 10) + 1) : (l = t.length, p = 0); l--;) { - if (E = t[l]) { - for (G = E.length; p < G; p++) { + for (u = g.length, y ? (m = parseInt(y[0], 10) + 1, p = parseInt(y[1], 10) + 1) : (m = t.length, p = 0); m--;) { + if (E = t[m]) { + for (H = E.length; p < H; p++) { if (e = E[p], !f || !n["@" + e]) { if (g[u++] = e, b && u === b) { - return Z(c, l + ":" + p, g); + return Z(c, m + ":" + p, g); } } } @@ -989,7 +935,7 @@ function ea(a, b, c, e, d, h, f) { } } } else { - !m || d && "not" === d[0] || (g = a[0], k && (k = parseInt(k[0], 10))); + !l || d && "not" === d[0] || (g = a[0], k && (k = parseInt(k[0], 10))); } if (b) { f = g.length; @@ -1000,10 +946,109 @@ function ea(a, b, c, e, d, h, f) { } return Z(c, K, g); } -;(function() { +;var qa = {encode:pa, rtl:!1}, ra = L("[\\W_]+"), sa = L("[^a-z0-9 ]"), ta = L("[\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5]"), ua = L("[\u00e8\u00e9\u00ea\u00eb]"), va = L("[\u00ec\u00ed\u00ee\u00ef]"), wa = L("[\u00f2\u00f3\u00f4\u00f5\u00f6\u0151]"), xa = L("[\u00f9\u00fa\u00fb\u00fc\u0171]"), ya = L("[\u00fd\u0177\u00ff]"), za = L("\u00f1"), Aa = L("[\u00e7c]"), Ba = L("\u00df"), Ca = L(" & "), Da = [ta, "a", ua, "e", va, "i", wa, "o", xa, "u", ya, "y", za, "n", Aa, "k", Ba, "s", Ca, " and ", ra, " ", +sa, ""]; +function pa(a, b) { + b || (b = this); + return b.pipeline(a.toLowerCase(), Da, " ", !1); +} +;var Fa = {encode:Ea, rtl:!1}, Ga = L("ae"), Ha = L("ai"), Ia = L("ay"), Ja = L("ey"), Ka = L("oe"), La = L("ue"), Ma = L("ie"), Na = L("sz"), Oa = L("zs"), Pa = L("ck"), Qa = L("cc"), Ra = L("sh"), Sa = L("th"), Ta = L("dt"), Ua = L("ph"), Va = L("pf"), Wa = L("ou"), Xa = L("uo"), Ya = [Ga, "a", Ha, "ei", Ia, "ei", Ja, "ei", Ka, "o", La, "u", Ma, "i", Na, "s", Oa, "s", Ra, "s", Pa, "k", Qa, "k", Sa, "t", Ta, "t", Ua, "f", Va, "f", Wa, "o", Xa, "u"]; +function Ea(a, b) { + a && (a = pa(a, this).join(" "), 2 < a.length && (a = G(a, Ya)), b || (1 < a.length && (a = M(a)), a && (a = a.split(" ")))); + return a; +} +;var $a = {encode:Za, rtl:!1}, ab = [/[\W_]+/g, " ", /[^a-z0-9 ]/g, ""]; +function Za(a) { + return this.pipeline(a.toLowerCase(), ab, " ", !1); +} +;var cb = {encode:bb, rtl:!1}, db = L("(?!\\b)p"), eb = L("(?!\\b)z"), fb = L("(?!\\b)[cgq]"), gb = L("(?!\\b)n"), hb = L("(?!\\b)d"), ib = L("(?!\\b)[vw]"), jb = L("(?!\\b)[aeiouy]"), kb = [db, "b", eb, "s", fb, "k", gb, "m", hb, "t", ib, "f", jb, ""]; +function bb(a) { + a && (a = Ea(a, !0), 1 < a.length && (a = G(a, kb)), 1 < a.length && (a = M(a)), a && (a = a.split(" "))); + return a; +} +;var mb = {encode:lb, rtl:!1, tokenize:"strict"}, nb = [/[\W_]+/g, " ", /[^a-z ]/g, ""]; +function lb(a) { + a = this.pipeline(a.toLowerCase(), nb, !1, !1); + var b = []; + if (a) { + for (var c = a.split(" "), e = c.length, d = 0, h = 0; d < e; d++) { + if ((a = c[d]) && (!this.filter || !this.filter[a])) { + for (var f = a[0], g = ob(f), k = 1; k < a.length; k++) { + var l = ob(a[k]); + if (l !== g && (f += l, g = l, 4 === f.length)) { + break; + } + } + b[h++] = (f + "0000").substring(0, 4); + } + } + } + return b; +} +function ob(a) { + switch(a) { + case "b": + case "f": + case "p": + case "v": + return 1; + case "c": + case "g": + case "j": + case "k": + case "q": + case "s": + case "x": + case "z": + return 2; + case "d": + case "t": + return 3; + case "l": + return 4; + case "m": + case "n": + return 5; + case "r": + return 6; + } + return ""; +} +;var qb = {encode:pb, rtl:!0}, rb = /[\W_]+/; +function pb(a) { + return this.pipeline(a, !1, rb, !1); +} +;var tb = {encode:sb, rtl:!1, tokenize:"strict"}, ub = /[\x00-\x7F]/g; +function sb(a) { + return this.pipeline(a.replace(ub, ""), !1, "", !1); +} +;var wb = {encode:vb, rtl:!1}, xb = /[\W_]+/; +function vb(a) { + return this.pipeline(a, !1, xb, !1); +} +;V["latin:advanced"] = Fa; +V["latin:balance"] = $a; +V["latin:default"] = da; +V["latin:extra"] = cb; +V["latin:simple"] = qa; +V["latin:soundex"] = mb; +V["arabic:default"] = qb; +V["cjk:default"] = tb; +V["cyrillic:default"] = wb; +U.de = {filter:"aber als am an auch auf aus bei bin bis bist da dadurch daher darum das da\u00df dass dein deine dem den der des dessen deshalb die dies dieser dieses doch dort du durch ein eine einem einen einer eines er es euer eure f\u00fcr hatte hatten hattest hattet hier hinter ich ihr ihre im in ist ja jede jedem jeden jeder jedes jener jenes jetzt kann kannst k\u00f6nnen k\u00f6nnt machen mein meine mit mu\u00df mu\u00dft musst m\u00fcssen m\u00fc\u00dft nach nachdem nein nicht nun oder seid sein seine sich sie sind soll sollen sollst sollt sonst soweit sowie und unser unsere unter vom von vor wann warum was weiter weitere wenn wer werde werden werdet weshalb wie wieder wieso wir wird wirst wo woher wohin zu zum zur \u00fcber".split(" "), +stemmer:{niss:"", isch:"", lich:"", heit:"", keit:"", ell:"", bar:"", end:"", ung:"", est:"", ern:"", em:"", er:"", en:"", es:"", st:"", ig:"", ik:"", e:"", s:""}, matcher:{}}; +U.en = {filter:"a about above after again against all also am an and any are aren't as at be because been before being below both but by can cannot can't come could couldn't did didn't do does doesn't doing dont down during each even few first for from further get go had hadn't has hasn't have haven't having he hed her here here's hers herself hes him himself his how how's i id if ill im in into is isn't it it's itself i've just know let's like make me more most mustn't my myself new no nor not now of off on once only or other ought our our's ourselves out over own same say see shan't she she'd shell shes should shouldn't so some such than that that's the their theirs them themselves then there there's these they they'd they'll they're they've this those through time to too until up us very want was wasn't way we wed well were weren't we've what what's when when's where where's which while who whom who's why why's will with won't would wouldn't you you'd you'll your you're your's yourself yourselves you've".split(" "), +stemmer:{ational:"ate", iveness:"ive", fulness:"ful", ousness:"ous", ization:"ize", tional:"tion", biliti:"ble", icate:"ic", ative:"", alize:"al", iciti:"ic", entli:"ent", ousli:"ous", alism:"al", ation:"ate", aliti:"al", iviti:"ive", ement:"", enci:"ence", anci:"ance", izer:"ize", alli:"al", ator:"ate", logi:"log", ical:"ic", ance:"", ence:"", ness:"", able:"", ible:"", ment:"", eli:"e", bli:"ble", ful:"", ant:"", ent:"", ism:"", ate:"", iti:"", ous:"", ive:"", ize:"", al:"", ou:"", er:"", ic:""}, +matcher:{}}; +U.at = {filter:"aber als am an auch auf aus bei bin bis bist da dadurch daher darum das da\u00df dass dein deine dem den der des dessen deshalb die dies dieser dieses doch dort du durch ein eine einem einen einer eines er es euer eure f\u00fcr hatte hatten hattest hattet hier hinter ich ihr ihre im in ist ja jede jedem jeden jeder jedes jener jenes jetzt kann kannst k\u00f6nnen k\u00f6nnt machen mein meine mit mu\u00df mu\u00dft musst m\u00fcssen m\u00fc\u00dft nach nachdem nein nicht nun oder seid sein seine sich sie sind soll sollen sollst sollt sonst soweit sowie und unser unsere unter vom von vor wann warum was weiter weitere wenn wer werde werden werdet weshalb wie wieder wieso wir wird wirst wo woher wohin zu zum zur \u00fcber".split(" "), +stemmer:{niss:"", isch:"", lich:"", heit:"", keit:"", end:"", ung:"", est:"", ern:"", em:"", er:"", en:"", es:"", st:"", ig:"", ik:"", e:"", s:""}, matcher:{}}; +U.us = {filter:"a about above after again against all also am an and any are aren't as at be because been before being below both but by can cannot can't come could couldn't did didn't do does doesn't doing dont down during each even few first for from further get go had hadn't has hasn't have haven't having he hed her here here's hers herself hes him himself his how how's i id if ill im in into is isn't it it's itself i've just know let's like make me more most mustn't my myself new no nor not now of off on once only or other ought our our's ourselves out over own same say see shan't she she'd shell shes should shouldn't so some such than that that's the their theirs them themselves then there there's these they they'd they'll they're they've this those through time to too until up us very want was wasn't way we wed well were weren't we've what what's when when's where where's which while who whom who's why why's will with won't would wouldn't you you'd you'll your you're your's yourself yourselves you've".split(" "), +stemmer:{ational:"ate", iveness:"ive", fulness:"ful", ousness:"ous", ization:"ize", tional:"tion", biliti:"ble", icate:"ic", ative:"", alize:"al", iciti:"ic", entli:"ent", ousli:"ous", alism:"al", ation:"ate", aliti:"al", iviti:"ive", ement:"", enci:"ence", anci:"ance", izer:"ize", alli:"al", ator:"ate", logi:"log", ical:"ic", ance:"", ence:"", ness:"", able:"", ible:"", ment:"", eli:"e", bli:"ble", ful:"", ant:"", ent:"", ism:"", ate:"", iti:"", ous:"", ive:"", ize:"", al:"", ou:"", er:"", ic:""}, +matcher:{}}; +(function() { var a = this || window, b; (b = a.define) && b.amd ? b([], function() { - return R; - }) : "object" === typeof a.exports ? a.module.exports = R : a.FlexSearch = R; + return O; + }) : "object" === typeof a.exports ? a.module.exports = O : a.FlexSearch = O; })(); }).call(this); diff --git a/dist/lang/arabian/default.min.js b/dist/lang/arabian/default.min.js deleted file mode 100644 index 1a37d07..0000000 --- a/dist/lang/arabian/default.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(){'use strict';window.FlexSearch.registerCharset("arabian:default",function(a){return a.toLowerCase()},"");}).call(this); diff --git a/dist/lang/arabic/default.min.js b/dist/lang/arabic/default.min.js new file mode 100644 index 0000000..b592451 --- /dev/null +++ b/dist/lang/arabic/default.min.js @@ -0,0 +1 @@ +(function(){'use strict';var a=/[\W_]+/;window.FlexSearch.registerCharset("arabic:default",{encode:function(b){return this.a(b,!1,a,!1)},b:!0});}).call(this); diff --git a/dist/lang/at.min.js b/dist/lang/at.min.js index d02c2df..231c36b 100644 --- a/dist/lang/at.min.js +++ b/dist/lang/at.min.js @@ -1,2 +1,2 @@ -(function(){'use strict';window.FlexSearch.registerLanguage("at","aber als am an auch auf aus bei bin bis bist da dadurch daher darum das da\u00df dass dein deine dem den der des dessen deshalb die dies dieser dieses doch dort du durch ein eine einem einen einer eines er es euer eure f\u00fcr hatte hatten hattest hattet hier hinter ich ihr ihre im in ist ja jede jedem jeden jeder jedes jener jenes jetzt kann kannst k\u00f6nnen k\u00f6nnt machen mein meine mit mu\u00df mu\u00dft musst m\u00fcssen m\u00fc\u00dft nach nachdem nein nicht nun oder seid sein seine sich sie sind soll sollen sollst sollt sonst soweit sowie und unser unsere unter vom von vor wann warum was weiter weitere wenn wer werde werden werdet weshalb wie wieder wieso wir wird wirst wo woher wohin zu zum zur \u00fcber".split(" "), -{niss:"",isch:"",lich:"",heit:"",keit:"",end:"",ung:"",est:"",ern:"",em:"",er:"",en:"",es:"",st:"",ig:"",ik:"",e:"",s:""});}).call(this); +(function(){'use strict';window.FlexSearch.registerLanguage("at",{filter:"aber als am an auch auf aus bei bin bis bist da dadurch daher darum das da\u00df dass dein deine dem den der des dessen deshalb die dies dieser dieses doch dort du durch ein eine einem einen einer eines er es euer eure f\u00fcr hatte hatten hattest hattet hier hinter ich ihr ihre im in ist ja jede jedem jeden jeder jedes jener jenes jetzt kann kannst k\u00f6nnen k\u00f6nnt machen mein meine mit mu\u00df mu\u00dft musst m\u00fcssen m\u00fc\u00dft nach nachdem nein nicht nun oder seid sein seine sich sie sind soll sollen sollst sollt sonst soweit sowie und unser unsere unter vom von vor wann warum was weiter weitere wenn wer werde werden werdet weshalb wie wieder wieso wir wird wirst wo woher wohin zu zum zur \u00fcber".split(" "), +b:{niss:"",isch:"",lich:"",heit:"",keit:"",end:"",ung:"",est:"",ern:"",em:"",er:"",en:"",es:"",st:"",ig:"",ik:"",e:"",s:""},a:{}});}).call(this); diff --git a/dist/lang/cjk/default.min.js b/dist/lang/cjk/default.min.js index 1304382..4307919 100644 --- a/dist/lang/cjk/default.min.js +++ b/dist/lang/cjk/default.min.js @@ -1 +1 @@ -(function(){'use strict';window.FlexSearch.registerCharset("cjk:default",function(a){return a.toLowerCase()},"");}).call(this); +(function(){'use strict';var a=/[\x00-\x7F]/g;window.FlexSearch.registerCharset("cjk:default",{encode:function(b){return this.a(b.replace(a,""),!1,"",!1)},b:!1,c:"strict"});}).call(this); diff --git a/dist/lang/cyrillic/default.min.js b/dist/lang/cyrillic/default.min.js index fdc92fc..2bcf5d1 100644 --- a/dist/lang/cyrillic/default.min.js +++ b/dist/lang/cyrillic/default.min.js @@ -1 +1 @@ -(function(){'use strict';window.FlexSearch.registerCharset("cyrillic:default",function(a){return a.toLowerCase()},"");}).call(this); +(function(){'use strict';var a=/[\W_]+/;window.FlexSearch.registerCharset("cyrillic:default",{encode:function(b){return this.a(b,!1,a,!1)},b:!1});}).call(this); diff --git a/dist/lang/de.min.js b/dist/lang/de.min.js index f73f8d9..288cc8d 100644 --- a/dist/lang/de.min.js +++ b/dist/lang/de.min.js @@ -1,2 +1,2 @@ -(function(){'use strict';window.FlexSearch.registerLanguage("de","aber als am an auch auf aus bei bin bis bist da dadurch daher darum das da\u00df dass dein deine dem den der des dessen deshalb die dies dieser dieses doch dort du durch ein eine einem einen einer eines er es euer eure f\u00fcr hatte hatten hattest hattet hier hinter ich ihr ihre im in ist ja jede jedem jeden jeder jedes jener jenes jetzt kann kannst k\u00f6nnen k\u00f6nnt machen mein meine mit mu\u00df mu\u00dft musst m\u00fcssen m\u00fc\u00dft nach nachdem nein nicht nun oder seid sein seine sich sie sind soll sollen sollst sollt sonst soweit sowie und unser unsere unter vom von vor wann warum was weiter weitere wenn wer werde werden werdet weshalb wie wieder wieso wir wird wirst wo woher wohin zu zum zur \u00fcber".split(" "), -{niss:"",isch:"",lich:"",heit:"",keit:"",end:"",ung:"",est:"",ern:"",em:"",er:"",en:"",es:"",st:"",ig:"",ik:"",e:"",s:""});}).call(this); +(function(){'use strict';window.FlexSearch.registerLanguage("de",{filter:"aber als am an auch auf aus bei bin bis bist da dadurch daher darum das da\u00df dass dein deine dem den der des dessen deshalb die dies dieser dieses doch dort du durch ein eine einem einen einer eines er es euer eure f\u00fcr hatte hatten hattest hattet hier hinter ich ihr ihre im in ist ja jede jedem jeden jeder jedes jener jenes jetzt kann kannst k\u00f6nnen k\u00f6nnt machen mein meine mit mu\u00df mu\u00dft musst m\u00fcssen m\u00fc\u00dft nach nachdem nein nicht nun oder seid sein seine sich sie sind soll sollen sollst sollt sonst soweit sowie und unser unsere unter vom von vor wann warum was weiter weitere wenn wer werde werden werdet weshalb wie wieder wieso wir wird wirst wo woher wohin zu zum zur \u00fcber".split(" "), +b:{niss:"",isch:"",lich:"",heit:"",keit:"",ell:"",bar:"",end:"",ung:"",est:"",ern:"",em:"",er:"",en:"",es:"",st:"",ig:"",ik:"",e:"",s:""},a:{}});}).call(this); diff --git a/dist/lang/en.min.js b/dist/lang/en.min.js index 36864c2..6f18d0e 100644 --- a/dist/lang/en.min.js +++ b/dist/lang/en.min.js @@ -1,2 +1,2 @@ -(function(){'use strict';window.FlexSearch.registerLanguage("en","a about above after again against all also am an and any are aren't as at be because been before being below both but by can cannot can't come could couldn't did didn't do does doesn't doing dont down during each even few first for from further get go had hadn't has hasn't have haven't having he hed her here here's hers herself hes him himself his how how's i id if ill im in into is isn't it it's itself i've just know let's like make me more most mustn't my myself new no nor not now of off on once only or other ought our our's ourselves out over own same say see shan't she she'd shell shes should shouldn't so some such than that that's the their theirs them themselves then there there's these they they'd they'll they're they've this those through time to too until up us very want was wasn't way we wed well were weren't we've what what's when when's where where's which while who whom who's why why's will with won't would wouldn't you you'd you'll your you're your's yourself yourselves you've".split(" "), -{ational:"ate",iveness:"ive",fulness:"ful",ousness:"ous",ization:"ize",tional:"tion",biliti:"ble",icate:"ic",ative:"",alize:"al",iciti:"ic",entli:"ent",ousli:"ous",alism:"al",ation:"ate",aliti:"al",iviti:"ive",ement:"",enci:"ence",anci:"ance",izer:"ize",alli:"al",ator:"ate",logi:"log",ical:"ic",ance:"",ence:"",ness:"",able:"",ible:"",ment:"",eli:"e",bli:"ble",ful:"",ant:"",ent:"",ism:"",ate:"",iti:"",ous:"",ive:"",ize:"",al:"",ou:"",er:"",ic:""});}).call(this); +(function(){'use strict';window.FlexSearch.registerLanguage("en",{filter:"a about above after again against all also am an and any are aren't as at be because been before being below both but by can cannot can't come could couldn't did didn't do does doesn't doing dont down during each even few first for from further get go had hadn't has hasn't have haven't having he hed her here here's hers herself hes him himself his how how's i id if ill im in into is isn't it it's itself i've just know let's like make me more most mustn't my myself new no nor not now of off on once only or other ought our our's ourselves out over own same say see shan't she she'd shell shes should shouldn't so some such than that that's the their theirs them themselves then there there's these they they'd they'll they're they've this those through time to too until up us very want was wasn't way we wed well were weren't we've what what's when when's where where's which while who whom who's why why's will with won't would wouldn't you you'd you'll your you're your's yourself yourselves you've".split(" "), +b:{ational:"ate",iveness:"ive",fulness:"ful",ousness:"ous",ization:"ize",tional:"tion",biliti:"ble",icate:"ic",ative:"",alize:"al",iciti:"ic",entli:"ent",ousli:"ous",alism:"al",ation:"ate",aliti:"al",iviti:"ive",ement:"",enci:"ence",anci:"ance",izer:"ize",alli:"al",ator:"ate",logi:"log",ical:"ic",ance:"",ence:"",ness:"",able:"",ible:"",ment:"",eli:"e",bli:"ble",ful:"",ant:"",ent:"",ism:"",ate:"",iti:"",ous:"",ive:"",ize:"",al:"",ou:"",er:"",ic:""},a:{}});}).call(this); diff --git a/dist/lang/latin/advanced.min.js b/dist/lang/latin/advanced.min.js index 688ceae..b42aa5b 100644 --- a/dist/lang/latin/advanced.min.js +++ b/dist/lang/latin/advanced.min.js @@ -1 +1 @@ -(function(){'use strict';function a(b,c){for(var d=0,e=c.length;da;i--)f=c.substring(a,i),add_index(n,h,f,b,g,e,k,m-1)}break;default:const i=add_index(n,h,c,b,1,e,k,m-1);if(l&&1=k){const d=h._ctx[c]||(h._ctx[c]=create_object()),e=this._ctx[c]||(this._ctx[c]=create_object_array(m-(k||0)));let f=a-l,i=a+l+1;for(0>f&&(f=0),i>j&&(i=j);f=g){let b=a[h-(i+0.5>>0)];b=b[c]||(b[c]=[]),b[b.length]=d}return i}function remove_index(b,c){if(b){const a=get_keys(b);for(let d=0,e=a.length;da&&(j=0);const c=j||0;h=c+b,ha;i--)f=c.substring(a,i),add_index(n,h,f,b,g,e,k,m-1)}break;default:const i=add_index(n,h,c,b,1,e,k,m-1);if(l&&1=k){const d=h._ctx[c]||(h._ctx[c]=create_object()),e=this._ctx[c]||(this._ctx[c]=create_object_array(m-(k||0)));let f=a-l,i=a+l+1;for(0>f&&(f=0),i>j&&(i=j);f=g){let b=a[h-(i+0.5>>0)];b=b[c]||(b[c]=[]),b[b.length]=d}return i}function remove_index(b,c){if(b){const a=get_keys(b);for(let d=0,e=a.length;da&&(j=0);const c=j||0;h=c+b,h=d&&(this._task_completed=this.worker),this._task_completed===this.worker&&(this.cache&&this._cache.set(b,this._task_result),this._current_callback&&this._current_callback(this._task_result))),this}; \ No newline at end of file +import FlexSearch from"./flexsearch.js";const worker_stack={},inline_supported="undefined"!=typeof Blob&&"undefined"!=typeof URL&&URL.createObjectURL;export default function init(a,b,c,d,e){let f=a;const g=inline_supported?URL.createObjectURL(new Blob([(RELEASE?"":"var RELEASE = '"+RELEASE+"';var DEBUG = false;var PROFILER = false;var SUPPORT_PRESET = true;var SUPPORT_SUGGESTION = true;var SUPPORT_ENCODER = true;var SUPPORT_CACHE = true;var SUPPORT_ASYNC = true;var SUPPORT_SERIALIZE = true;var SUPPORT_INFO = true;var SUPPORT_DOCUMENT = true;var SUPPORT_WHERE = true;var SUPPORT_PAGINATION = true;var SUPPORT_OPERATOR = true;var SUPPORT_CALLBACK = true;var SUPPORT_WORKER = true;")+"("+c.toString()+")()"],{type:"text/javascript"})):f+(RELEASE?"."+RELEASE:"")+".js";return f+="-"+b,worker_stack[f]||(worker_stack[f]=[]),worker_stack[f][e]=new Worker(g),worker_stack[f][e].onmessage=d,!1,worker_stack[f][e]}function worker_module(){let a,b;self.onmessage=function(c){const d=c.data;if(d)if(d.search){const c=b.search(d.content,d.threshold?{limit:d.limit,threshold:d.threshold,where:d.where}:d.limit);self.postMessage({id:a,content:d.content,limit:d.limit,result:c})}else if(d.add)b.add(d.id,d.content);else if(d.update)b.update(d.id,d.content);else if(d.remove)b.remove(d.id);else if(d.clear)b.clear();else if(d.info){const c=b.info();c.worker=a,console.log(c)}else d.register&&(a=d.id,d.options.cache=!1,d.options.async=!1,d.options.worker=!1,b=new Function(d.register.substring(d.register.indexOf("{")+1,d.register.lastIndexOf("}")))(),b=new b(d.options))}}export function addWorker(a,b,c,d){const e=init("flexsearch","id"+a,worker_module,function(a){const b=a.data;b&&b.result&&d(b.id,b.content,b.result,b.limit,b.where,b.cursor,b.suggest)},b),f=FlexSearch.toString();return c.id=b,e.postMessage({register:f,options:c,id:b}),e}FlexSearch.prototype.worker_handler=function(a,b,c,d){return this._task_completed!==this.worker&&(this._task_result=this._task_result.concat(c),this._task_completed++,d&&this._task_result.length>=d&&(this._task_completed=this.worker),this._task_completed===this.worker&&(this.cache&&this._cache.set(b,this._task_result),this._current_callback&&this._current_callback(this._task_result))),this}; \ No newline at end of file diff --git a/doc/0.7.0.md b/doc/0.7.0.md index 73fb986..6942023 100644 --- a/doc/0.7.0.md +++ b/doc/0.7.0.md @@ -1,34 +1,34 @@ -## Documentation 0.7.0 +## Documentation 0.7.0-rev2 ### Language Handler -Handling languages was completely replaced by a more generic approach. All language-specific definitions has excluded and was optimized for maximum dead-code elimination when using compiler/bundler. Each language exists of 6 definitions, which are divided into two groups: +Handling languages was completely replaced by a more generic approach. All language-specific definitions has excluded and was optimized for maximum dead-code elimination when using compiler/bundler. Each language exists of 5 definitions, which are divided into two groups: -1. Charset (mandatory) - 1. `encode` - 2. `split` - 3. `rtl` -2. Language (optional) - 1. `stemmer` - 2. `filter` - 3. `matcher` - -Therefore to __fully__ describe a custom language on the fly you need to pass: +1. Charset + 1. ___encode___, type: `function(string):string[]` + 2. ___rtl___, type: `boolean` +2. Language + 1. ___matcher___, type: `{string: string}` + 2. ___stemmer___, type: `{string: string}` + 3. ___filter___, type: `string[]` + +The charset contains the encoding logic, the language contains stemmer, stopword filter and matchers. Multiple language definitions can use the same charset encoder. Also this separation let you manage different language definitions for special use cases (e.g. names, cities, dialects/slang, etc.). + +To fully describe a custom language __on the fly__ you need to pass: ```js const index = FlexSearch({ // mandatory: - encode: (str) => str, - split: /\W+/, - rtl: false, + encode: (str) => [str], // optionally: - filter: [], + rtl: false, stemmer: {}, - matcher: {} + matcher: {}, + filter: [] }); ``` -When passing no parameter it uses the default `latin` schema. +When passing no parameter it uses the `latin:default` schema by default. @@ -40,13 +40,7 @@ When passing no parameter it uses the default `latin` schema.