Как работал поиск Рамблер


Как работал поиск Рамблер

Интернет постоянно развивается: число сайтов и их размеры увеличиваются с каждым днем. Ведь только представьте: большие сайты обновляются каждый день, даже если объем обновлений составляет 1024 байт (1 Кбайт), то если предположить, что таких сайтов 10 000, каждый день поисковой машине приходится обрабатывать (индексировать) 10 000 Кбайт (грубо говоря, 10 Мбайт) информации. Число 10 000 взято «с потолка» — примера ради. Оно может быть выше или ниже — ведь даже крупные сайты обновляются не каждый день. Размер обновления также надуман. Представьте информационно-аналитический сайт, на котором практически каждый день публикуются новые статьи или перепечатываются материалы с других сайтов. В этом случае размер обновлений будет далеко не 1 Кбайт, а как минимум 10. Добавьте ко всему этому еще новости и другую информацию и выходит, что при количестве обновленных сайтов 10 000 поисковая машина должна проиндексировать 120 Мбайт текста. И при всем этом поисковик должен не только точно отобразить результаты поиска, но еще и сделать это как можно быстрее, чтобы пользователю было удобно с ним работать. Кому захочется ждать результатов поиска 10 минут? Это я, конечно, утрирую, но лично я бы не ждал результатов поиска более 30 секунд (с момента щелчка по кнопке Найти до появления первых десяти результатов). Выходит, разработчикам поисковой машины приходится постоянно поддерживать на должном уровне не только «железо», которое должно быть в состоянии обрабатывать постоянно растущие объемы информации, но и «математику» одним железом не возьмешь. Нужно постоянно совершенствовать алгоритмы поиска, чтобы при увеличении объемов поисковой базы, время поиска не увеличивалось (имеется в виду существенное увеличение времени — для пользователя нет разницы, сколько будет выполняться поиск 2,5 секунды или 2,0555 секунды, поскольку он не в состоянии оценить это время).

Как и в любой другой поисковой машине, сбором информации занимается робот-паук. Каждый день паук «выходит на работу». У него есть свой график — список URL, которые он должен обойти. Он скачивает все их в поисковую базу, а потом архивирует и «складывает» в хранилище. Ясно, что при нынешних объемах информации одна машина не в состоянии обработать нужное количество информации. Поэтому робот-паук запущен не на одной машине, а сразу на нескольких, причем у каждой машины свое собственное задание. Одна машина собирает новые страницы, другая — изменившиеся страницы и т.д. Все загруженные страницы поступают в единое хранилище.

В хранилище сжатая информация разбивается на части — по 50 Мбайт-каждая. Данные части распределяются между 70 машинами, на которых выполняется программа-индексатор. Как только индексатор обработает одну часть информации, он сразу же принимается за другую. Как видите, для обеспечения нужного уровня производительности вся работа поисковой машины выполняется параллельно.

Примечание. Хотите создать собственную поисковую систему? Хотите знать, почему некоторые поисковые машины не прошли испытания временем? Может, у них просто не хватило финансов? Вы посчитайте: только для индексатора нужно 70 мощных компьютеров. Тут уже компьютером настольного уровня не отделаешься — объемы информации не те. Предположим, что стоимость одной машины составляет 1000 долларов (за такие деньги можно купить довольно мощный сервер с большим дисковым объемом). Это уже 70 000 долларов. Но 70 машин — это еще далеко не все. Ведь еще нужны машины для паука, сетевое и вспомогательное оборудование, мощный интернет-канал. Если пораскинуть мозгами, то для запуска поисковой машины (только для оборудования) нужно около 150 000 долларов. Раньше было проще. Когда Рамблер начинал свою работу, общее число сайтов Рунета исчислялось десятками, затем — сотнями. В любом случае всю работу мог взять на себя один сервер (ну, два — в крайнем случае). Сегодня времена другие — информации стало намного больше.

После такого «финансового» примечания вернемся к принципам работы Рамблера. Каждая из 70 частей обрабатывается (индексируется) параллельно — об этом уже было сказано. В результате получает 70 небольших баз, которые предстоит «слить» воедино — в одну большую базу. Для этого используется специальная программа — «сливатор». В слиянии участвует 71 база — 70 новых частей и 1 предыдущая (самая большая) редакция базы. Сама операция слияния довольно простая и быстрая.

    Принципы слияния, думаю, понятны каждому:
  • если при слиянии были обнаружены две страницы с одинаковым адресом, то в базу добавляется самая свежая версия;
  • если при скачивании URL получена ошибка 404 (страница не найдена), то такая страница временно удаляется из базы;
  • если две или более страницы имеют одно и то же содержимое, но размещены по разным адресам (страницы-копии), то все они объединяются в один документ.

Как видите, общие принципы работы Рамблера такие же, как и у обычной поисковой машины, но алгоритм у всех поисковых машин, конечно же, разный.

Вы так же можете ознакомиться с другими статьями главы Поиск информации в сети Интернет:

  • Проблемы поиска в интернете, поисковые машины
  • Эффективность поиска
  • Как правильно искать информацию
  • Поисковые системы интернета
  • Типы поисковых систем
  • Краткая история Google
  • Поисковые алгоритмы Google
  • Специальный (расширенный) синтаксис Google
  • Модификатор inurl в Google
  • Язык поисковых запросов Google
  • Поисковые запросы в Google
  • Расширенный поиск Google
  • Установка свойств поиска Google в Cookies браузера
  • Результат поиска Google
  • Google поиск по картинкам
  • Службы Google
  • Электронная почта Google
  • Поисковая система Рамблер (Rambler)
  • Рамблер запросы, синтаксис Рамблера
  • Поисковая система Yandex (Яndex)
  • Языковой поиск Яндекс
  • Синтаксис Яндекса
  • Синтаксис запросов Яндекс
  • Операторы поиска Яндекс
  • Дополнительные возможности поиска Яндекс

Удачи Вам! До скорых встреч на страницах сайта RusOpen.com

Опубликовано: 04.04.2015

Leave a reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>