瀏覽代碼

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

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