8.Как устроены поисковые системы

Дата публикации: 09.10.2012 20:06:12

Современные поисковые машины обрабатывают десятки тысяч обращений в секунду. Давайте рассмотрим, как устроены механизмы поиска.

Поисковые системы на физическом уровне.

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

Современное помещение яндекса

Рис. 6 Серверное помещение Яндекса

Еще в 1997 году обработкой запросов для пользователей Яндекса и выдачей результатов поиска занимался всего один сервер, который был слабее любого современного домашнего компьютера. Сервер располагался в кабинете одного из основателей компании. Уже к 2000 году у Яндекса было около 50 серверов. Каждый месяц число серверов увеличивалось, что со временем привело к появлению собственного дата-центра (сейчас у Яндекса их уже четыре). Современный дата-центр — это сотни серверов, объединенных в единую сеть, которые позволяют справляться с большим объемом запросов и высокой посещаемостью сервиса. Для примера, посещаемость только

поиска Яндекса за февраль 2012 года составила 28,3 миллиона человек.

Поисковые системы на логическом уровне.

Когда пользователь хочет что-то найти, он вводит запрос. Его сначала обрабатывает «балансировщик нагрузки» — специализированное устройство, которое автоматически перенаправляет запрос пользователя в наименее загруженный на данный момент кластер. Это позволяет максимально эффективно использовать имеющиеся вычислительные мощности.

Затем поисковый запрос попадает в «метапоиск». Эта система получает все необходимые данные и узнает, к какому типу данных запрос относится. На этом же этапе запрос проверяется на орфографию. Также система определяет, из какого региона поступил запрос и стоит ли по нему показывать региональные сайты.

Логическая схема обработки запроса Яндекса

Рис. 7 Логическая схема обработки.

Далее метапоиск проверяет, не было ли похожего запроса к системе в последнее время. Это связано с тем, что некоторые запросы становятся очень популярными в определенные моменты (значимое событие, катастрофа или даже рекламная кампания нового продукта), а другие популярны

постоянно (например, связанные с социальными сетями). Чтобы снизить нагрузку, поисковая система некоторое время хранит ответы на запросы пользователей в кэше и в случае повторных обращений показывает уже готовые результаты, вместо того чтобы формировать ответы заново.

Если при проверке не получилось найти уже готовый ответ в кэше, поисковая система начинает формирование нового ответа и запрос пользователя передается дальше, на серверы «базового поиска». Именно в базовом поиске находится индекс поисковой системы, разбитый на отдельные части и распределенный по серверам, поскольку поиск по частям всегда быстрее. Стоит обратить внимание, что каждый сервер имеет несколько копий. Это позволяет не только защитить информацию от потери, но и распределить нагрузку. Если информация с конкретного сервера окажется слишком востребованной и один из серверов будет перегружен, проблема решится подключением копий этого сервера.

По результатам поиска каждый сервер базового поиска возвращает метапоиску результаты, связанные с запросом пользователя. Далее к работе подключается алгоритм ранжирования «Матрикснет», который и определяет, на каком месте в поисковой выдаче будет каждая конкретная ссылка.