-function FluidbookSearch() {\r
-}\r
-\r
-FluidbookSearch.prototype = {\r
- getHints: function(q) {\r
- var words = this.normalizeQuery(q);\r
- q = words.pop();\r
- var res = [];\r
-\r
- if (q.length < 3) {\r
- return res;\r
- }\r
-\r
- var v;\r
- for (var k in INDEX) {\r
- v = INDEX[k];\r
- if (k.indexOf(q) != 0) {\r
- continue;\r
- }\r
- res.push([k, v.t]);\r
- }\r
-\r
- res.sort(this.sortHints);\r
- return res.slice(0, 12);\r
- },\r
- find: function(q) {\r
- var words = this.normalizeQuery(q);\r
-\r
- var res = {};\r
- var terms = [];\r
- var total=0;\r
-\r
- var q, v, k, kk, word, wordata, page, occurences;\r
- for (kk in words) {\r
- q = words[kk];\r
-\r
- for (k in INDEX) {\r
- v = INDEX[k];\r
- if (k.indexOf(q) != 0) {\r
- continue;\r
- }\r
- for (word in v.w) {\r
- wordata = v.w[word];\r
- terms.push(word);\r
- for (page in wordata.p) {\r
-\r
- occurences = wordata.p[page];\r
-\r
- page = parseInt(page);\r
-\r
-\r
- if (res[page] == undefined) {\r
- res[page] = 0;\r
- }\r
- res[page] += occurences;\r
- total+=occurences;\r
- }\r
- }\r
- }\r
- }\r
-\r
- return {\r
- total:total,\r
- results: res,\r
- terms: terms.join(' ')\r
- };\r
- },\r
- sortHints: function(a, b) {\r
- return b[1] - a[1];\r
- },\r
- kill: function() {\r
-\r
- },\r
- normalizeQuery: function(q) {\r
- q = this.noAccents(q);\r
- q = q.toLowerCase();\r
- return q.split(' ');\r
- },\r
- noAccents: function(source) {\r
- source = source.replace(/[àáâãäå]/g, "a");\r
- source = source.replace(/[ÀÁÂÃÄÅ]/g, "A");\r
- source = source.replace(/[èéêë]/g, "e");\r
- source = source.replace(/[ËÉÊÈ]/g, "E");\r
- source = source.replace(/[ìíîï]/g, "i");\r
- source = source.replace(/[ÌÍÎÏ]/g, "I");\r
- source = source.replace(/[ðòóôõöø]/g, "o");\r
- source = source.replace(/[ÐÒÓÔÕÖØ]/g, "O");\r
- source = source.replace(/[ùúûü]/g, "u");\r
- source = source.replace(/[ÙÚÛÜ]/g, "U");\r
- source = source.replace(/[ýýÿ]/g, "y");\r
- source = source.replace(/[ÝÝŸ]/g, "Y");\r
- source = source.replace(/[ç]/g, "c");\r
- source = source.replace(/[Ç]/g, "C");\r
- source = source.replace(/[ñ]/g, "n");\r
- source = source.replace(/[Ñ]/g, "N");\r
- source = source.replace(/[š]/g, "s");\r
- source = source.replace(/[Š]/g, "S");\r
- source = source.replace(/[ž]/g, "z");\r
- source = source.replace(/[Ž]/g, "Z");\r
- source = source.replace(/[æ]/g, "ae");\r
- source = source.replace(/[Æ]/g, "AE");\r
- source = source.replace(/[œ]/g, "oe");\r
- source = source.replace(/[Œ]/g, "OE");\r
- return source;\r
-\r
- }\r
-};\r
-\r
-
\ No newline at end of file
+function FluidbookSearch() {
+ loadJsLibrary('data/search.index.js');
+}
+
+FluidbookSearch.prototype = {
+ getHints: function(q) {
+ var words = this.normalizeQuery(q);
+ q = words.pop();
+ var res = [];
+
+ if (q.length < 3) {
+ return res;
+ }
+
+ var v;
+ for (var k in INDEX) {
+ v = INDEX[k];
+ if (k.indexOf(q) != 0) {
+ continue;
+ }
+ res.push([k, v.t]);
+ }
+
+ res.sort(this.sortHints);
+ return res.slice(0, 12);
+ },
+ find: function(q) {
+ var words = this.normalizeQuery(q);
+
+ var res = {};
+ var terms = [];
+ var total = 0;
+
+ var q, v, k, kk, word, wordata, page, occurences;
+ for (kk in words) {
+ q = words[kk];
+
+ for (k in INDEX) {
+ v = INDEX[k];
+ if (k.indexOf(q) != 0) {
+ continue;
+ }
+ for (word in v.w) {
+ wordata = v.w[word];
+ terms.push(word);
+ for (page in wordata.p) {
+
+ occurences = wordata.p[page];
+
+ page = parseInt(page);
+
+
+ if (res[page] == undefined) {
+ res[page] = 0;
+ }
+ res[page] += occurences;
+ total += occurences;
+ }
+ }
+ }
+ }
+
+ return {
+ total: total,
+ results: res,
+ terms: terms.join(' ')
+ };
+ },
+ sortHints: function(a, b) {
+ return b[1] - a[1];
+ },
+ kill: function() {
+
+ },
+ normalizeQuery: function(q) {
+ q = this.noAccents(q);
+ q = q.toLowerCase();
+ return q.split(' ');
+ },
+ noAccents: function(source) {
+ source = source.replace(/[àáâãäå]/g, "a");
+ source = source.replace(/[ÀÁÂÃÄÅ]/g, "A");
+ source = source.replace(/[èéêë]/g, "e");
+ source = source.replace(/[ËÉÊÈ]/g, "E");
+ source = source.replace(/[ìíîï]/g, "i");
+ source = source.replace(/[ÌÍÎÏ]/g, "I");
+ source = source.replace(/[ðòóôõöø]/g, "o");
+ source = source.replace(/[ÐÒÓÔÕÖØ]/g, "O");
+ source = source.replace(/[ùúûü]/g, "u");
+ source = source.replace(/[ÙÚÛÜ]/g, "U");
+ source = source.replace(/[ýýÿ]/g, "y");
+ source = source.replace(/[ÝÝŸ]/g, "Y");
+ source = source.replace(/[ç]/g, "c");
+ source = source.replace(/[Ç]/g, "C");
+ source = source.replace(/[ñ]/g, "n");
+ source = source.replace(/[Ñ]/g, "N");
+ source = source.replace(/[š]/g, "s");
+ source = source.replace(/[Š]/g, "S");
+ source = source.replace(/[ž]/g, "z");
+ source = source.replace(/[Ž]/g, "Z");
+ source = source.replace(/[æ]/g, "ae");
+ source = source.replace(/[Æ]/g, "AE");
+ source = source.replace(/[œ]/g, "oe");
+ source = source.replace(/[Œ]/g, "OE");
+ return source;
+
+ }
+};
+