22 Дек 2004 Ср 06:09 Поисковая система Google - Как устроен Google Suggest
Поисковая система Google - Как устроен Google Suggest
Новая функция «предсказания запросов» Google Suggest — одна из самых удивительных программистских разработок, которые появились на поисковых сайтах в последнее время. Разработчики пытаются разобраться, как работает этот скрипт.
Бета-тестирование Google Suggest началось неделю назад. Вполне возможно, что скоро эта функция будет встроена в основной движок Google.
Google Suggest — это технология автозаполнения строки поискового запроса на основе общей статистики самых популярных запросов. При этом также демонстрируется примерное количество документов, которые соответствуют каждому предполагаемому запросу. Для работы системы необходимо разрешить в браузере выполнение Javascript и прием файлов cookie.
За неделю, прошедшую с момента начала тестирования Google Suggest, независимые разработчики подробно разобрали, как работает этот скрипт. Наиболее полный анализ опубликовал в своем блоге Крис Джастус (Chris Justus).
Оригинальный скрипт Google Suggest сжат, насколько это только возможно (до 11 КБ). Поэтому для анализа нужно первым делом его «расшифровать». В расшифрованном, а тем более в снабженном комментариями виде каждый программист уже может изучить исходный код и получить детальное представление, как он работает.
Как говорит Крис Джастус, это «самая крутая штука, которую я видел с тех пор как обнаружил SOAP-клиент с поддержкой WSDL в браузере Mozilla». Технология предсказания запросов Google Suggest работает в реальном режиме времени. С вводом каждой новой буквы список вариантов обновляется. Скрипт технически восхитителен как минимум по двум причинам:
1. Скорость. Даже при быстрой печати список вариантов поразительно быстро обновляется после каждого нажатия клавиши. А ведь при этом производится запрос к базе данных и какая-никакая сортировка на стороне сервера.
2. Интерфейс. Выпадающее меню идеально соответствует ширине поисковой строки, самый подходящий вариант в строке поиска выделен, осуществляется навигация по меню вверх и вниз.
После анализа кода скрипта выявляются и другие особенности: отличная поддержка кэша, так что после нажатия Backspace скрипт не посылает новый запрос на сервер, динамическая подстройка скорости обновления в зависимости от пинга на Google. Для работы с «быстрыми пользователями» на плохом коннекте предназначена специальная функция setTimeout, которая при быстрой печати обновляет результаты не после каждого нажатия, а через два или три (при быстрой печати).
Вот другие особенности, которые выяснились после изучения кода скрипта:
1. Автозаполнение можно отключить, если добавить в адресную строку параметр autocomplete="off".
2. Объект XMLHTTP / XMLHttpRequest служит для коммуникации с сервером Google, отправки запросов и получения данных без обновления страницы.
3. Отлично реализовано слежение за нажатиями клавиш и положением курсора мыши.
4. Действительно понятно, как можно выделить текст в строке запроса средствами Javascript.
Выполнение скрипта вызывается из HTML-страницы командой
InstallAC()…
Интересно, что при этом осуществляется проверка:
var Jb="zh-CN|zh-TW|ja|ko|vi|"
То есть система пытается определить пользователей из Японии, Кореи и Китая, что может говорить о поддержке не только английского, но и азиатских языков.
Функция InstallAC вызывает другую функцию (installACPart2), которая проверяет поддержку браузером XMLHttp и создает ресурс «_completeDiv», куда и направляется контент, полученный с сервера.
Полный анализ скрипта Google Suggest можно изучить в блоге Криса Джастуса. Там действительно очень много интересного…