Переглянути джерело

Поправки багов поиска

Book Pauk 2 роки тому
батько
коміт
784dda03fd
2 змінених файлів з 5 додано та 4 видалено
  1. 4 3
      client/components/Search/Search.vue
  2. 1 1
      server/core/DbSearcher.js

+ 4 - 3
client/components/Search/Search.vue

@@ -1124,6 +1124,7 @@ class Search {
         const s = this.search;
 
         const emptyFieldValue = '?';
+        const maxUtf8Char = String.fromCodePoint(0xFFFFF);
         const ruAlphabet = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя';
         const enAlphabet = 'abcdefghijklmnopqrstuvwxyz';
         const enru = new Set((ruAlphabet + enAlphabet).split(''));
@@ -1151,7 +1152,7 @@ class Search {
             if (searchValue[0] == '=') {
 
                 searchValue = searchValue.substring(1);
-                return bookValue == searchValue;
+                return bookValue.localeCompare(searchValue) == 0;
             } else if (searchValue[0] == '*') {
 
                 searchValue = searchValue.substring(1);
@@ -1163,8 +1164,8 @@ class Search {
             } else if (searchValue[0] == '?') {
                 return bookValue == '' || bookValue.indexOf(searchValue) == 0;
             } else {
-
-                return bookValue.indexOf(searchValue) == 0;
+                //where = `@dirtyIndexLR('value', ${db.esc(a)}, ${db.esc(a + maxUtf8Char)})`;
+                return bookValue.localeCompare(searchValue) >= 0 && bookValue.localeCompare(searchValue + maxUtf8Char) <= 0;
             }
         };
 

+ 1 - 1
server/core/DbSearcher.js

@@ -45,7 +45,7 @@ class DbSearcher {
             a = a.substring(1);
             where = `@indexIter('value', (v) => {
                 const enru = new Set(${db.esc(enruArr)});
-                return !v || (!enru.has(v[0].toLowerCase()) && v.indexOf(${db.esc(a)}) >= 0);
+                return !v || (!enru.has(v[0]) && v.indexOf(${db.esc(a)}) >= 0);
             })`;
         } else {
             where = `@dirtyIndexLR('value', ${db.esc(a)}, ${db.esc(a + maxUtf8Char)})`;