Autocomplete и большое количество элементов. Как работает?
Как работает autocomplete с большим количеством элементов? Например, города у booking.com или запросы у гугла?
Там же миллион элементов. Почему не тормозит?
А можно примеры? Допустим, мне необходимо сделать при регистрации город пользователя. Как мне можно оптимизировать запрос к полю "city_name"? Связанных полей, допустим, я не использую.
@TsarS Ну смотри, у меня в базе сейчас ~205к записей классификатора населенных пунктов, это только по России, так вот при запросе нужно:
1. сделать запрос кэшируемым в nosql на какое-то время (у меня минута) - это позволит при таком же запросе с фронта от другого пользователя отдать результат почти моментально;
2. по данной базе строится индекс, например sphinx, из которого можно делать выборки в разы быстрее чем напрямую из sql по fulltext поиску;
3. запросы в БД распределены по slave БД (их у нас 12).
Все это позволяет делать выбор города почти моментальным для любого пользователя.
после ввода нескольких букав проверяем чтобы задержка между нажатиями кнопок была вменяемой и шлём на сервер ajax-запрос
с сервера получаем пару вариантов, показываем их
можно не смотреть на задержку, а делать это с отменой deffered объекта, т.е. отсылать запрос на каждое нажатие, но если происходит за ним след нажатие, то отменять предыдущий запрос - это позволяет не заморачиваться на тему: "а как быстро в среднем рядовой пользователь стучит по клавишам"
На одном из моих проектов более 500 000 строк. Никаких тормозов не замечаю.
Работает через ajax запрос. Главное написать верно обработчик. У меня используется "кеширование" обработчика.