Просмотрите ваши записи, чтобы создать одноразовый индекс, объединив все поля поиска в одном строковом поле, называемом индексом.
Сохраните эти проиндексированные записив массиве.
Разделить массив по индексу .. как и все a в одном массиве и т. д.
Использовать функцию javascript indexOf () для индекса, соответствующего запросу, введенному пользователем, и для поиска записей из многораздельного массива.
Это была простая часть, но она будет поддерживать всепростые запросы очень эффективным способом, потому что индекс не нужно создавать заново для каждого запроса, а операция indexOf очень эффективна.Я использовал его для поиска до 2000 записей.Я использовал предварительно отсортированный массив.Собственно, так работают Gmail и Yahoo Mail.Они хранят ваши контакты в браузере в предварительно отсортированном массиве с индексом, который позволяет вам видеть имена контактов при вводе.
Это также дает вам основу для дальнейшего развития.Теперь вы можете написать расширенную логику анализа запросов.Например, для поддержки нескольких простых условных ключевых слов, таких как - И ИЛИ НЕ, потребуется около 20-30 строк пользовательского кода JavaScript.Или вы можете найти библиотеку JS, которая будет выполнять синтаксический анализ для вас, как это делает Lucene.
Для справочной реализации вышеупомянутой логики, посмотрите, как ZmContactList.js сортирует и ищетконтакты для автозаполнения.