Как вы используете автозаполнение для тысяч записей? - PullRequest
7 голосов
/ 24 июня 2010

Есть ли способ настроить автозаполнение в PHP / jQuery, который может быстро пробегать тысячи строк в базе данных?

У меня есть доска объявлений, где пользователь поступает в колледж - и я хочупредлагаем автозаполнение.Проблема в том, что в Соединенных Штатах насчитывается 4500 колледжей, и это кажется ужасным решением.

Есть ли хороший способ как быстро выполнить запрос, так и возвращать результаты только тогда, когда доступно менее 10 вариантов?

Заранее спасибо, Уокер

Ответы [ 5 ]

5 голосов
/ 24 июня 2010

Я согласен с Анаксом.Возможно, вы захотите взглянуть на простое решение, такое как новое поле jQuery UI Autocomplete .

. Используя опции delay и minLength, вы можете запретить скрипту запрашивать сервер до тех пор, пока пользователь не войдет в систему.скажем, три символа, что уменьшит количество результатов.

PS.Существует также опция кэширования, которая может быть полезна.Вы можете кэшировать весь список на стороне клиента, уменьшая количество обращений к базе данных.

3 голосов
/ 24 июня 2010

Лучше всего использовать AJAX, учитывая количество записей. По сути, вам необходимо отслеживать нажатия клавиш и вызывать сценарий PHP, который, в свою очередь, будет извлекать соответствующие записи из базы данных.

Хорошим примером будет dhtmlxCombo .

2 голосов
/ 24 июня 2010

Вы могли бы сначала запросить другие квалификаторы, такие как «требуемый регион / штат», «специальность» и т. Д., А затем начать автозаполнение после того, как пользователь ввел 6 или более символов, чтобы отфильтровать более 4500 колледжей?

0 голосов
/ 30 июня 2010
0 голосов
/ 24 июня 2010

4500 не так уж много, в зависимости от вашего оборудования / количества пользователей / как часто вам действительно это нужно, вы можете сохранить список в памяти ( MySQL Memory engine какпример).
Но, как уже предлагалось, при получении результатов только при наличии 3 букв + у вас может даже не возникнуть проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...