Ситуация :
- с использованием PouchDB в качестве базы данных документов (встроенных!) В моем приложении Nodejs.
- запрос 400.000 записей записей пользователя (или далее)
- указание фильтра "имя", который может соответствовать первому ИЛИ полю фамилии
- структура документа, например (например):
{ _id: unique_1234, firstname: "john", lastname: "doo", age: 32, zip: "90210", email: "test@some.com", phone: "1234567890" }
- сгенерировал индексы для различных полей, также пробовал с картами / уменьшить и просмотры ....
- успешные "очень быстрые" запросы на прямых полях "соответствия" ( например, на zip, email, et c ... с $ eq и $ and)
Задача :
- невозможно выполнить быстро например, запросы:
$or: [ { "firstname": filter}, {"lastname": filter}]
или $regex
- невозможно принудительно использовать, используя любые заданные индексы c (например, по имени и фамилии), когда find () и с помощью селектора
$or
или $in
- выходит из памяти при попытке выполнить какую-либо ручную фильтрацию на
allDocs()
- , если не соответствует правильному виду при использовании
find()
, и выходит из памяти ry - чрезвычайно медленные запросы или нехватка памяти при использовании
$regex
- определение представлений и использование
query()
не помогает, или я не могу понять, как это можно использовать для текста совпадения в одном из обоих полей имени
Я также попробовал все виды дополнительных способов сделать «более быстрый» поиск, например «нормализовать» имена, например, удалить все символы и пробелы, отличные от alphanum, в обеих частях, concat, используйте подстановочные знаки, et c. Ничего не помогает.
Я не эксперт по Pouchdb (или Couchdb), но я пытался читать и следовать всем API и руководствам, но все равно ни к чему не привел. Что я мог попробовать дальше?