diff --git a/client/components/Search/Search.vue b/client/components/Search/Search.vue index 5413311..9340b4b 100644 --- a/client/components/Search/Search.vue +++ b/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; } }; diff --git a/server/core/DbSearcher.js b/server/core/DbSearcher.js index f186a2e..78cdba4 100644 --- a/server/core/DbSearcher.js +++ b/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)})`;