Время для прочтения: 0 мин. 10 сек.

Легко ли быть зеркалом?

Яндекс всегда хотел быть зеркалом интернета. На 100% это невозможно, и мы хотим сделать вид, что мы — зеркало для тех, кто на нас смотрит. Мим за пустой рамкой несуществующего зеркала должен быть внимательным и иметь хорошую реакцию, чтобы создать иллюзию, что он — отражение. Мы в Яндексе работаем над технологиями «свежести», чтобы сделать отличия поискового индекса от интернета незаметными для людей.


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

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

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

Чтобы окончательно сделать из поискового индекса отражение, мы создали и запустили новые технологии — робот «Orange Crawler» и «Real-Time поиск». Основная разработка была сделана калифорнийским отделением Яндекса — Yandex Labs в сотрудничестве с программистами московского офиса.

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

Веб — это не набор отдельных страниц, которые можно рассматривать независимо. Страницы сильно связаны друг с другом, данные о ссылках очень интенсивно используются в ранжировании и в отборе из всего бесконечного интернета страниц, интересных человеку.

Люди обычно попадают на новые урлы через первые страницы любимых сайтов или по ссылкам с других новых сообщений. Поисковый робот должен находить эти же ссылки, часто освежая старые страницы, и ходить по ссылкам из новых уже скачанных документов. Именно поэтому для получения качественных свежих данных робот просто обязан работать не только с новыми документами, а со всем вебом, зная его структуру.

Orange познает ссылочную структуру интернета. Для этого ему достаточно скачивать и переобходить только часть «старых» страниц — хоть и достаточно большую. Полученные знания позволяют Orange обнаруживать почти все новые страницы, выбирать из огромного их количества все хоть сколько-нибудь интересные и мгновенно рассчитывать для них ссылочные факторы ранжирования. Вслед за роботом Orange документы обрабатывает Real-Time поиск — он подхватывает выбранные документы, индексирует их и за секунды выкладывает на поиск.

С помощью Orange мы достигли значительного улучшения свежести базы. В будущем мы сделаем его еще более агрессивным: Orange будет использовать все доступные источники информации об изменениях в интернете и реагировать на эти изменения мгновенно.

Кластер Orange Crawler реализован как распределенная вычислительная система: на каждой машине одновременно выполняются сотни небольших задач, результаты их работы в виде маленьких асинхронных сообщений отправляются на другие машины. На всем кластере сегодня обрабатывается более 100 тысяч сообщений в секунду. Подобная архитектура позволяет исключить задержки при обработке Real-Time информации, очень надежна и дает неограниченные возможности к масштабированию кластера.

Свежесть — еще одна составляющая в поиске, где простой эффект достигается сложными средствами. Хорошо, когда смотрящий в зеркало видит не особенности зеркала, а только то, что в нем отражается.

Федор Романенко и Екатерина Вебер,
операторы сетевой соковыжималки

Ссылки

Для вставки кода используйте HTML-теги
<pre><code class="php">ваш код</code></pre>