Кратко

  • В первичной статье 1994 года Брайан Пинкертон описал публичный индекс WebCrawler: почти 50 тысяч документов на более чем 9 тысячах серверов, свыше 6 тысяч запросов ежедневно и еженедельное обновление.
  • Программа имела и поиск в реальном времени: от подходящих результатов идти по новым ссылкам, добавлять страницы и снова выполнять запрос. Пинкертон прямо писал, что этот режим не предоставлялся публике: личный обход для множества пользователей увеличил бы нагрузку на сеть.

Один каталог, тысячи читателей

Поисковая система может скачать страницы заранее, сохранить их слова и затем отвечать многим людям из одной базы. Другой путь — ждать конкретного вопроса и лишь тогда отправлять программу за отсутствующими страницами. WebCrawler включал обе возможности. Публичная страница поиска открывала первую: сервер запросов изучал уже сохранённый текст и выдавал заголовки и адреса по степени соответствия.

Доклад Пинкертона на чикагской конференции объясняет сбор базы. Робот начинал с известных документов и следовал их ссылкам. Обнаружив новый сервер, он стремился взять с него хотя бы одну страницу до глубокого обхода старых серверов. В базе хранились полнотекстовый индекс и граф документов, ссылок и серверов. Получив страницу, WebCrawler отмечал посещение, разбирал исходящие ссылки и индексировал заголовок вместе с телом документа. Ограниченное место заставляло выбирать широкое покрытие вместо исчерпывающего чтения каждого сайта.

На момент статьи Пинкертон сообщал почти о 50 тысячах документов на более чем 9 тысячах серверов, свыше 6 тысяч запросов в сутки и обновлении индекса раз в неделю. Это снимок работы его сервиса в 1994 году, а не численность всего Веба. Новые страницы могли ждать следующего обхода. Страницы за длинной цепочкой ссылок могли не попасть в базу. Зато однажды загруженный документ обслуживал множество последующих вопросов без нового обращения к серверу, где он лежал.

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

Второй режим шёл за вопросом

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

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

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

За осторожность приходилось платить свежестью. Общая база быстро отвечала, но пропускала то, что появлялось между недельными обновлениями. Робот по запросу мог зайти за край карты. Его дополнительную работу, однако, выполняли бы серверы, которых никто не спрашивал о желании обслуживать каждую частную экспедицию. Пинкертон рассматривал возможность возвращать найденное личными роботами в главный индекс, чтобы оплаченный обход приносил пользу следующему читателю. В статье это план на будущее, а не описание доступной функции.