500 записей не слишком велика, на мой взгляд.Вы можете сделать это для начала: модуль автозаполнения YUI на внешнем интерфейсе.После загрузки страницы извлеките данные один раз с сервера через API REST и инициализируйте структуры данных автозаполнения для каждого из полей, в которых оно требуется.
Для больших наборов данных вы все равно можете использовать виджет автозаполнения YUI, но данные будутприходят с сервера при каждом нажатии клавиши.На сервере вы можете предварительно построить индекс на основе троичного поискового дерева (один раз в неделю) и обслуживать его с помощью веб-службы, принимая строку с частично введенным типом и возвращая фиксированный максимальный список совпадений в качестве выходных данных.Обратите внимание на автодополнение символа финансов на Yahoo Finance.
Преимущество метода, основанного на сервере, заключается в том, что производительность является быстрой независимо от размера корпуса (данных).Но для оптимального использования памяти вам нужно только сохранить конечный список совпадений в узлах дерева.Используя первый метод, где модуль автозаполнения YUI хранит и индексирует данные, вы можете увидеть все совпадения для входа, но ответ может быть немного медленнее.