Поправки багов поиска
This commit is contained in:
@@ -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 {
|
||||||
|
//where = `@dirtyIndexLR('value', ${db.esc(a)}, ${db.esc(a + maxUtf8Char)})`;
|
||||||
return bookValue.indexOf(searchValue) == 0;
|
return bookValue.localeCompare(searchValue) >= 0 && bookValue.localeCompare(searchValue + maxUtf8Char) <= 0;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -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)})`;
|
||||||
|
|||||||
Reference in New Issue
Block a user