aboutsummaryrefslogtreecommitdiffstats
path: root/_static/searchtools.js
diff options
context:
space:
mode:
authorjason2017-01-23 20:18:42 -0700
committerjason2017-01-23 20:18:42 -0700
commitf3c64b9a0837dd03584b67179267e1e0ca8edadd (patch)
tree4b282f228902334e13415547f9d3ff8e9889d0d4 /_static/searchtools.js
parent4780da086a62543c2bfbf0b98cabc181c4420244 (diff)
downloadeventmq-f3c64b9a0837dd03584b67179267e1e0ca8edadd.tar.gz
eventmq-f3c64b9a0837dd03584b67179267e1e0ca8edadd.zip
update docs
Diffstat (limited to '_static/searchtools.js')
-rwxr-xr-x[-rw-r--r--]_static/searchtools.js166
1 files changed, 151 insertions, 15 deletions
diff --git a/_static/searchtools.js b/_static/searchtools.js
index 0e794fd..bbfb3ac 100644..100755
--- a/_static/searchtools.js
+++ b/_static/searchtools.js
@@ -2,14 +2,15 @@
2 * searchtools.js_t 2 * searchtools.js_t
3 * ~~~~~~~~~~~~~~~~ 3 * ~~~~~~~~~~~~~~~~
4 * 4 *
5 * Sphinx JavaScript utilties for the full-text search. 5 * Sphinx JavaScript utilities for the full-text search.
6 * 6 *
7 * :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS. 7 * :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
8 * :license: BSD, see LICENSE for details. 8 * :license: BSD, see LICENSE for details.
9 * 9 *
10 */ 10 */
11 11
12 12
13/* Non-minified version JS is _stemmer.js if file is provided */
13/** 14/**
14 * Porter Stemmer 15 * Porter Stemmer
15 */ 16 */
@@ -225,6 +226,106 @@ var Scorer = {
225}; 226};
226 227
227 228
229
230
231
232var splitChars = (function() {
233 var result = {};
234 var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648,
235 1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702,
236 2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971,
237 2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345,
238 3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761,
239 3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823,
240 4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125,
241 8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695,
242 11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587,
243 43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141];
244 var i, j, start, end;
245 for (i = 0; i < singles.length; i++) {
246 result[singles[i]] = true;
247 }
248 var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709],
249 [722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161],
250 [1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568],
251 [1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807],
252 [1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047],
253 [2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383],
254 [2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450],
255 [2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547],
256 [2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673],
257 [2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820],
258 [2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946],
259 [2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023],
260 [3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173],
261 [3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332],
262 [3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481],
263 [3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718],
264 [3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791],
265 [3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095],
266 [4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205],
267 [4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687],
268 [4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968],
269 [4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869],
270 [5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102],
271 [6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271],
272 [6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592],
273 [6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822],
274 [6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167],
275 [7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959],
276 [7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143],
277 [8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318],
278 [8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483],
279 [8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101],
280 [10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567],
281 [11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292],
282 [12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444],
283 [12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783],
284 [12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311],
285 [19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511],
286 [42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774],
287 [42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071],
288 [43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263],
289 [43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519],
290 [43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647],
291 [43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967],
292 [44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295],
293 [57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274],
294 [64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007],
295 [65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381],
296 [65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]];
297 for (i = 0; i < ranges.length; i++) {
298 start = ranges[i][0];
299 end = ranges[i][1];
300 for (j = start; j <= end; j++) {
301 result[j] = true;
302 }
303 }
304 return result;
305})();
306
307function splitQuery(query) {
308 var result = [];
309 var start = -1;
310 for (var i = 0; i < query.length; i++) {
311 if (splitChars[query.charCodeAt(i)]) {
312 if (start !== -1) {
313 result.push(query.slice(start, i));
314 start = -1;
315 }
316 } else if (start === -1) {
317 start = i;
318 }
319 }
320 if (start !== -1) {
321 result.push(query.slice(start));
322 }
323 return result;
324}
325
326
327
328
228/** 329/**
229 * Search Module 330 * Search Module
230 */ 331 */
@@ -323,7 +424,7 @@ var Search = {
323 var searchterms = []; 424 var searchterms = [];
324 var excluded = []; 425 var excluded = [];
325 var hlterms = []; 426 var hlterms = [];
326 var tmp = query.split(/\s+/); 427 var tmp = splitQuery(query);
327 var objectterms = []; 428 var objectterms = [];
328 for (i = 0; i < tmp.length; i++) { 429 for (i = 0; i < tmp.length; i++) {
329 if (tmp[i] !== "") { 430 if (tmp[i] !== "") {
@@ -337,6 +438,10 @@ var Search = {
337 } 438 }
338 // stem the word 439 // stem the word
339 var word = stemmer.stemWord(tmp[i].toLowerCase()); 440 var word = stemmer.stemWord(tmp[i].toLowerCase());
441 // prevent stemmer from cutting word smaller than two chars
442 if(word.length < 3 && tmp[i].length >= 3) {
443 word = tmp[i];
444 }
340 var toAppend; 445 var toAppend;
341 // select the correct list 446 // select the correct list
342 if (word[0] == '-') { 447 if (word[0] == '-') {
@@ -373,8 +478,7 @@ var Search = {
373 } 478 }
374 479
375 // lookup as search terms in fulltext 480 // lookup as search terms in fulltext
376 results = results.concat(this.performTermsSearch(searchterms, excluded, terms, Scorer.term)) 481 results = results.concat(this.performTermsSearch(searchterms, excluded, terms, titleterms));
377 .concat(this.performTermsSearch(searchterms, excluded, titleterms, Scorer.title));
378 482
379 // let the scorer override scores with a custom scoring function 483 // let the scorer override scores with a custom scoring function
380 if (Scorer.score) { 484 if (Scorer.score) {
@@ -435,7 +539,8 @@ var Search = {
435 displayNextItem(); 539 displayNextItem();
436 }); 540 });
437 } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) { 541 } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
438 $.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[0] + '.txt', 542 var suffix = DOCUMENTATION_OPTIONS.SOURCELINK_SUFFIX;
543 $.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[5] + (item[5].slice(-suffix.length) === suffix ? '' : suffix),
439 dataType: "text", 544 dataType: "text",
440 complete: function(jqxhr, textstatus) { 545 complete: function(jqxhr, textstatus) {
441 var data = jqxhr.responseText; 546 var data = jqxhr.responseText;
@@ -474,6 +579,7 @@ var Search = {
474 */ 579 */
475 performObjectSearch : function(object, otherterms) { 580 performObjectSearch : function(object, otherterms) {
476 var filenames = this._index.filenames; 581 var filenames = this._index.filenames;
582 var docnames = this._index.docnames;
477 var objects = this._index.objects; 583 var objects = this._index.objects;
478 var objnames = this._index.objnames; 584 var objnames = this._index.objnames;
479 var titles = this._index.titles; 585 var titles = this._index.titles;
@@ -527,7 +633,7 @@ var Search = {
527 } else { 633 } else {
528 score += Scorer.objPrioDefault; 634 score += Scorer.objPrioDefault;
529 } 635 }
530 results.push([filenames[match[0]], fullname, '#'+anchor, descr, score]); 636 results.push([docnames[match[0]], fullname, '#'+anchor, descr, score, filenames[match[0]]]);
531 } 637 }
532 } 638 }
533 } 639 }
@@ -538,23 +644,48 @@ var Search = {
538 /** 644 /**
539 * search for full-text terms in the index 645 * search for full-text terms in the index
540 */ 646 */
541 performTermsSearch : function(searchterms, excluded, terms, score) { 647 performTermsSearch : function(searchterms, excluded, terms, titleterms) {
648 var docnames = this._index.docnames;
542 var filenames = this._index.filenames; 649 var filenames = this._index.filenames;
543 var titles = this._index.titles; 650 var titles = this._index.titles;
544 651
545 var i, j, file, files; 652 var i, j, file;
546 var fileMap = {}; 653 var fileMap = {};
654 var scoreMap = {};
547 var results = []; 655 var results = [];
548 656
549 // perform the search on the required terms 657 // perform the search on the required terms
550 for (i = 0; i < searchterms.length; i++) { 658 for (i = 0; i < searchterms.length; i++) {
551 var word = searchterms[i]; 659 var word = searchterms[i];
660 var files = [];
661 var _o = [
662 {files: terms[word], score: Scorer.term},
663 {files: titleterms[word], score: Scorer.title}
664 ];
665
552 // no match but word was a required one 666 // no match but word was a required one
553 if ((files = terms[word]) === undefined) 667 if ($u.every(_o, function(o){return o.files === undefined;})) {
554 break; 668 break;
555 if (files.length === undefined) {
556 files = [files];
557 } 669 }
670 // found search word in contents
671 $u.each(_o, function(o) {
672 var _files = o.files;
673 if (_files === undefined)
674 return
675
676 if (_files.length === undefined)
677 _files = [_files];
678 files = files.concat(_files);
679
680 // set score for the word in each file to Scorer.term
681 for (j = 0; j < _files.length; j++) {
682 file = _files[j];
683 if (!(file in scoreMap))
684 scoreMap[file] = {}
685 scoreMap[file][word] = o.score;
686 }
687 });
688
558 // create the mapping 689 // create the mapping
559 for (j = 0; j < files.length; j++) { 690 for (j = 0; j < files.length; j++) {
560 file = files[j]; 691 file = files[j];
@@ -576,7 +707,9 @@ var Search = {
576 // ensure that none of the excluded terms is in the search result 707 // ensure that none of the excluded terms is in the search result
577 for (i = 0; i < excluded.length; i++) { 708 for (i = 0; i < excluded.length; i++) {
578 if (terms[excluded[i]] == file || 709 if (terms[excluded[i]] == file ||
579 $u.contains(terms[excluded[i]] || [], file)) { 710 titleterms[excluded[i]] == file ||
711 $u.contains(terms[excluded[i]] || [], file) ||
712 $u.contains(titleterms[excluded[i]] || [], file)) {
580 valid = false; 713 valid = false;
581 break; 714 break;
582 } 715 }
@@ -584,7 +717,10 @@ var Search = {
584 717
585 // if we have still a valid result we can add it to the result list 718 // if we have still a valid result we can add it to the result list
586 if (valid) { 719 if (valid) {
587 results.push([filenames[file], titles[file], '', null, score]); 720 // select one (max) score for the file.
721 // for better ranking, we should calculate ranking by using words statistics like basic tf-idf...
722 var score = $u.max($u.map(fileMap[file], function(w){return scoreMap[file][w]}));
723 results.push([docnames[file], titles[file], '', null, score, filenames[file]]);
588 } 724 }
589 } 725 }
590 return results; 726 return results;
@@ -594,7 +730,7 @@ var Search = {
594 * helper function to return a node containing the 730 * helper function to return a node containing the
595 * search summary for a given text. keywords is a list 731 * search summary for a given text. keywords is a list
596 * of stemmed words, hlwords is the list of normal, unstemmed 732 * of stemmed words, hlwords is the list of normal, unstemmed
597 * words. the first one is used to find the occurance, the 733 * words. the first one is used to find the occurrence, the
598 * latter for highlighting it. 734 * latter for highlighting it.
599 */ 735 */
600 makeSearchSummary : function(text, keywords, hlwords) { 736 makeSearchSummary : function(text, keywords, hlwords) {