Каждый день пользователи задают Яндексу десятки миллионов запросов, и поисковая система должна не только точно отвечать, но и быстро обрабатывать весь этот поток. Для этого Яндекс использует заранее подготовленные данные — индекс. Безусловно, поиск с помощью индекса ускоряет процесс ответа пользователю, как, например, предметный указатель в книге помогает быстрее найти нужное слово. Но размеры самого «предметного указателя» в поиске — огромны. Чтобы обрабатывать такие объемы данных и делать это быстро, Яндекс использует тысячи серверов. Сервера объединены в кластеры и даже в кластеры кластеров.
Архитектура поиска Яндекса устроена так, что к уже существующим серверам можно легко добавлять новые — для новых данных из постоянно растущего интернета.
Все пользовательские запросы сначала попадают в компьютерную систему «метапоиск». Метапоиск обрабатывает каждый запрос в реальном времени — выясняет все необходимые данные про запрос (из какого региона он был задан, к какому классу относится и т.п.), проводит лингвистическую обработку. Затем метапоиск проверяет, формировались ли в последнее время результаты поиска для этого запроса. Результаты поиска по часто задаваемым запросам некоторое время хранятся в памяти метапоиска, а не формируются каждый раз заново. И если вновь пришедший запрос оказался популярным, метапоиск покажет пользователю заранее сохраненные результаты.
Если же ответа в памяти нет, то метапоиск передаёт запрос на сервера другой компьютерной системы — «базового поиска». На базовом поиске хранится слепок интернета, по которому ищет Яндекс, — поисковая база. Она разбита на части, которые хранятся на разных серверах — искать ответ одновременно по нескольким частям базы данных быстрее, чем по всей базе целиком. Кроме того, у каждого сервера есть несколько копий. Это позволяет распределять нагрузку и не терять данные — если один из серверов не сможет своевременно ответить, информация всё равно найдется на дублирующих серверах. Из тысяч серверов базового поиска метапоиск выбирает наименее загруженные – таким образом, чтобы вместе они содержали целую поисковую базу.
Каждый из серверов отдаёт список документов, в которых есть слова из запроса, обратно в метапоиск. Там они объединяются, ранжируются с помощью технологии и попадают на
страницу результатов поиска.
Благодаря такой организации поиск Яндекса может отвечать пользователю за доли секунды.
![](//avatars.mds.yandex.net/get-bunker/50064/3fc34f43b8adb52ab58138c819f4c6771f3b5728/orig)