Вячеслав Тихонов
tikhonov@ukr.net
http://www.metaping.com/
1. Введение
Основные протоколы, используемые в Интернет (в дальнейшем также Сеть), не обеспечены достаточными встроенными функциями поиска, не говоря уже о миллионах серверах, находящихся в ней. Протокол HTTP, используемый в Интернет, хорош лишь в отношении
навигации, которая рассматривается только как средство просмотра страниц, но не их поиска. То же самое относится и к протоколу FTP, который даже более примитивен, чем HTTP. Из-за быстрого роста информации, доступной в Сети, навигационные методы просмотра быстро достигают предела их функциональных возможностей, не говоря уже о пределе их эффективности. Не указывая конкретных цифр, можно сказать, что нужную информацию уже не представляется возможным получить сразу, так как в Сети сейчас находятся миллиарды документов и все они в распоряжении пользователей Интернет, к тому же сегодня их количество возрастает согласно экспоненциальной зависимости. Количество изменений, которым эта информация подвергнута, огромно и, самое главное, они произошли за очень короткий период времени. Основная проблема заключается в том, что единой полной функциональной системы обновления и занесения подобного объема информации, одновременно доступного всем пользователям Интернет во всем мире, никогда не было. Для того, чтобы структурировать информацию, накопленную в сети Интернет, и обеспечить ее пользователей удобными средствами поиска необходимых им данных, были созданы поисковые системы.
2. Поисковые системы
Поисковые cистемы обычно состоят из трех компонент:
- агент (паук или кроулер), который перемещается по
Сети и собирает информацию;
- база данных, которая содержит всю информацию,
собираемую пауками;
- поисковый механизм, который люди используют как
интерфейс для взаимодействия с базой данных.
2.1 Как работают механизмы поиска
Cредства поиска и структурирования,
иногда называемые поисковыми механизмами, используются
для того, чтобы помочь людям найти информацию, в которой
они нуждаются. Cредства поиска типа агентов, пауков,
кроулеров и роботов используются для сбора информации о
документах, находящихся в Сети Интернет. Это специальные
программы, которые занимаются поиском страниц в Сети,
извлекают гипертекстовые ссылки на этих страницах и
автоматически индексируют информацию, которую они
находят для построения базы данных. Каждый поисковый
механизм имеет собственный набор правил, определяющих,
как cобирать документы. Некоторые следуют за каждой
ссылкой на каждой найденной странице и затем, в свою
очередь, исследуют каждую ссылку на каждой из новых
страниц, и так далее. Некоторые игнорируют ссылки,
которые ведут к графическим и звуковым файлам, файлам
мультипликации; другие игнорируют cсылки к ресурсам типа
баз данных WAIS; другие проинструктирова-ны, что нужно
просматривать прежде всего наиболее популярные страницы.
- Агенты - самые "интеллектуальные" из поисковых
средств. Они могут делать больше, чем просто искать:
они могут выполнять даже транзакции от Вашего имени.
Уже сейчас они могут искать cайты специфической
тематики и возвращать списки cайтов, отсортированных
по их посещаемости. Агенты могут обрабатывать
содержание документов, находить и индексировать другие
виды ресурсов, не только страницы. Они могут также
быть запрограммированы для извлечения информации из
уже существующих баз данных. Независимо от информации,
которую агенты индексируют, они передают ее обратно
базе данных поискового механизма.
- Общий поиск информации в Сети осуществляют
программы, известные как пауки. Пауки сообщают о
содержании найденного документа, индексируют его и
извлекают итоговую информацию. Также они просматривают
заголовки, некоторые ссылки и посылают
проиндексированную информацию базе данных поискового
механизма.
- Кроулеры просматривают заголовки и возращают
только первую ссылку.
- Роботы могут быть запрограммированы так, чтобы
переходить по различным cсылкам различной глубины
вложенности, выполнять индексацию и даже проверять
ссылки в документе. Из-за их природы они могут
застревать в циклах, поэтому, проходя по ссылкам, им
нужны значительные ресурсы Сети. Однако, имеются
методы, предназначенные для того, чтобы запретить
роботам поиск по сайтам, владельцы которых не желают,
чтобы они были проиндексированы.
Агенты извлекают и индексируют
различные виды информации. Некоторые, например,
индексируют каждое отдельное слово во встречающемся
документе, в то время как другие индексируют только
наиболее важных 100 слов в каждом, индексируют размер
документа и число слов в нем, название, заголовки и
подзаголовки и так далее. Вид построенного индекса
определяет, какой поиск может быть сделан поисковым
механизмом и как полученная информация будет
интерпретирована.
Агенты могут также перемещаться по
Интернет и находить информацию, после чего помещать ее в
базу данных поискового механизма. Администраторы
поисковых систем могут определить, какие сайты или типы
сайтов агенты должны посетить и проиндексировать.
Проиндексированная информация отсылается базе данных
поискового механизма так же, как было описано выше.
Люди могут помещать информацию прямо в индекс,
заполняя особую форму для того раздела, в который они
хотели бы поместить свою информацию. Эти данные
передаются базе данных.
Когда кто-либо хочет найти информацию,
доступную в Интернет, он посещает страницу поисковой
системы и заполняет форму, детализирующую информацию,
которая ему необходима. Здесь могут использоваться
ключевые слова, даты и другие критерии. Критерии в форме
поиска должны соответствовать критериям, используемым
агентами при индексации информации, которую они нашли
при перемещении по Сети.
База данных отыскивает предмет запроса,
основанный на информации, указанной в заполненной форме,
и выводит соответствующие документы, подготовленные
базой данных. Чтобы определить порядок, в котором список
документов будет показан, база данных применяет алгоритм
ранжирования. В идеальном случае, документы, наиболее
релевантные пользовательскому запросу будут помещены
первыми в списке. Различные поисковые системы используют
различные алгоритмы ранжирования, однако основные
принципы определения релевантности следующие:
- Количество слов запроса в текстовом содержимом
документа (т.е. в html-коде).
- Тэги, в которых эти слова располагаются.
- Местоположение искомых слов в документе.
- Удельный вес слов, относительно которых
определяется релевантность, в общем количестве слов
документа.
Эти принципы применяются всеми поисковыми
системами. А представленные ниже используются
некоторыми, но достаточно известными (вроде AltaVista,
HotBot).
- Время - как долго страница находится в базе
поискового сервера. Поначалу кажется, что это довольно
бессмысленный принцип. Но, если задуматься, как много
существует в Интернете сайтов, которые живут максимум
месяц! Если же сайт существует довольно долго, это
означает, что владелец весьма опытен в данной теме и
пользователю больше подойдет сайт, который пару лет
вещает миру о правилах поведения за столом, чем тот,
который появился неделю назад с этой же темой.
- Индекс цитируемости - как много ссылок на данную
страницу ведет с других страниц, зарегистрированных в
базе поисковика.
База данных выводит ранжированный
подобным образом список документов с HTML и возвращает
его человеку, сделавшему запрос. Различные поисковые
механизмы также выбирают различные способы показа
полученного списка - некоторые показывают только ссылки;
другие выводят cсылки c первыми несколькими
предложениями, содержащимися в документе или заголовок
документа вместе с ccылкой.
Когда Вы щелкаете на ссылке к одному из документов,
который вас интересует, этот документ запрашивается у
того сервера, на котором он находится.
2.2 Сравнительный обзор поисковых систем
Lycos. В Lycos используется следующий
механизм индексации:
- слова в title заголовке имеют высший приоритет;
- слова в начале страницы;
- слова в ссылках;
- если в его базе индекса есть сайты, ссылка с
которых указывает на индексируемый документ -
релевантность этого документа возрастает.
Как и большинство систем, Lycos дает
возможность применять простой запрос и более изощренный
метод поиска. В простом запросе в качестве поискового
критерия вводится предложение на естественном языке,
после чего Lycos производит нормализацию запроса, удаляя
из него так называемые stop-слова, и только после этого
приступает к его выполнению. Почти сразу выдается
информация о количестве документов на каждое слово, а
позже и список ссылок на формально релевантные
документы. В списке против каждого документа указывается
его мера близости запросу, количество слов из запроса,
попавших в документ, и оценочная мера близости, которая
может быть больше или меньше формально вычисленной. Пока
нельзя вводить логические операторы в строке вместе с
терминами, но использовать логику через систему меню
Lycos позволяет. Такая возможность применяется для
построения расширенной формы запроса, предназначенной
для искушенных пользователей, уже научившихся работать с
этим механизмом. Таким образом, видно, что Lycos
относится к системе с языком запросов типа "Like this",
но намечается его расширение и на другие способы
организации поисковых предписаний.
AltaVista. Индексирование в этой
системе осуществляется при помощи робота. При этом робот
имеет следующие приоритеты:
- слова содержащиеся в теге title имеют высший
приоритет; ключевые фразы в Meta тэгах;
- ключевые фразы, находящиеся в начале странички;
- ключевые фразы в ALT - ссылках
- ключевые фразы по количеству вхожденийприсутствия
словфраз;
Если тэгов на странице нет, использует первые 30
слов, которые индексирует и показывает вместо описания
(tag description)
Наиболее интересная возможность
AltaVista - это расширенный поиск. Здесь стоит сразу
оговориться, что, в отличие от многих других систем
AltaVista поддерживает одноместный оператор NOT. Кроме
этого, имеется еще и оператор NEAR, который реализует
возможность контекстного поиска, когда термины должны
располагаться рядом в тексте документа. AltaVista
разрешает поиск по ключевым фразам, при этом она имеет
довольно большой фразеологический словарь. Кроме всего
прочего, при поиске в AltaVista можно задать имя поля,
где должно встретиться слово: гипертекстовая ссылка,
applet, название образа, заголовок и ряд других полей. К
сожалению, подробно процедура ранжирования в
документации по системе не описана, но видно, что
ранжирование применяется как при простом поиске, так и
при расширенном запросе. Реально эту систему можно
отнести к системе с расширенным булевым поиском.
Yahoo. Данная система
появилась в Сети одной из первых, и сегодня Yahoo
сотрудничает со многими производителями средств
информационного поиска, а на различных ее серверах
используется различное программное обеспечение. Язык
Yahoo достаточно прост: все слова следует вводить через
пробел, они соединяются связкой AND либо OR. При выдаче
не указывается степень соответствия документа запросу, а
только подчеркиваются слова из запроса, которые
встретились в документе. При этом не производится
нормализация лексики и не проводится анализ на "общие"
слова. Хорошие результаты поиска получаются только
тогда, когда пользователь знает, что в базе данных Yahoo
информация есть наверняка. Ранжирование производится по
числу терминов запроса в документе. Yahoo относится к
классу простых традиционных систем с ограниченными
возможностями поиска.
OpenText. Информационная
система OpenText представляет собой самый
коммерциализированный информационный продукт в Сети. Все
описания больше похожи на рекламу, чем на информативное
руководство по работе. Система позволяет провести поиск
с использованием логических коннекторов, однако размер
запроса ограничен тремя терминами или фразами. В данном
случае речь идет о расширенном поиске. При выдаче
результатов сообщается степень соответствия документа
запросу и размер документа. Система позволяет также
улучшить результаты поиска в стиле традиционного
булевого поиска. OpenText можно было бы отнести к
разряду традиционных информационно-поисковых систем,
если бы не механизм ранжирования.
Infoseek. В этой системе индекс создает
робот, но он индексирует не весь сайт, а только
указанную страницу. При этом робот имеет такие
приоритеты:
- слова в заголовке title имеют наивысший приоритет;
- слова в теге keywords, description и частота
вхожденийповторений в самом тексте;
- при повторении одинаковых слов рядом выбрасывает
из индекса
- Допускает до 1024 символов для тега keywords, 200
символов для тэга description;
- Если тэги не использовались, индексирует первые
200 слов на странице и использует как описание;
Система Infoseek обладает довольно
развитым информационно-поисковым языком, позволяющим не
просто указывать, какие термины должны встречаться в
документах, но и своеобразно взвешивать их. Достигается
это при помощи специальных знаков "+" - термин обязан
быть в документе, и "-" - термин должен отсутствовать в
документе. Кроме этого, Infoseek позволяет проводить то,
что называется контекстным поиском. Это значит, что
используя специальную форму запроса, можно потребовать
последовательной совместной встречаемости слов. Также
можно указать, что некоторые слова должны совместно
встречаться не только в одном документе, а даже в
отдельном параграфе или заголовке. Имеется возможность
указания ключевых фраз, представляющих собой единое
целое, вплоть до порядка слов. Ранжирование при выдаче
осуществляется по числу терминов запроса в документе, по
числу фраз запроса за вычетом общих слов. Все эти
факторы используются как вложенные процедуры. Подводя
краткое резюме, можно сказать, что Infoseek относится к
традиционным системам с элементом взвешивания терминов
при поиске.
WAIS. WAIS является одной
из наиболее изощренных поисковых систем Internet. В ней
не реализованы лишь поиск по нечетким множествам и
вероятностный поиск. В отличие от многих поисковых
машин, система позволяет строить не только вложенные
булевые запросы, считать формальную релевантность по
различным мерам близости, взвешивать термины запроса и
документа, но и осуществлять коррекцию запроса по
релевантности. Система также позволяет использовать
усечения терминов, разбиение документов на поля и
ведение распределенных индексов. Не случайно именно эта
система была выбрана в качестве основной поисковой
машины для реализации энциклопедии "Британика" на
Internet.
3. Поисковые роботы
За последние годы Всемирная паутина
стала настолько популярной, что сейчас Интернет является
одним из основных средств публикации информации. Когда
размер Сети вырос из нескольких серверов и небольшого
числа документов до огромных пределов, стало ясно, что
ручная навигация по значительной части структуры
гипертекстовых ссылок больше не представляется
возможной, не говоря уже об эффективном методе
исследования ресурсов.
Эта проблема побудила исследователей
Интернет на проведение экспериментов с
автоматизированной навигацией по Сети, названной
"роботами". Веб-робот - это программа, которая
перемещается по гипертекстовой структуре Сети,
запрашивает документ и рекурсивно возвращает все
документы, на которые данный документ ссылается. Эти
программы также иногда называют "пауками", "
странниками", или " червями" и эти названия, возможно,
более привлекательны, однако, могут ввести в
заблуждение, поскольку термин "паук" и "странник"
cоздает ложное представление, что робот сам
перемещается, а термин "червь" мог бы подразумевать, что
робот еще и размножается подобно интернетовскому
вирусу-червю. В действительности, роботы реализованы как
простая программная система, которая запрашивает
информацию из удаленных участков Интернет, используя
стандартные cетевые протоколы.
3.1 Использование поисковых роботов
Роботы могут использоваться для
выполнения множества полезных задач, таких как
статистический анализ, обслуживание гипертекстов,
исследования ресурсов или зазеркаливания страниц.
Рассмотрим эти задачи подробнее.
3.1.1 Статистический Анализ
Первый робот был создан для того, чтобы
обнаружить и посчитать количество веб-серверов в Сети.
Другие статистические вычисления могут включать среднее
число документов, приходящихся на один сервер в Сети,
пропорции определенных типов файлов на сервере, средний
размер страницы, степень связанности ссылок и т.д.
3.1.2 Обслуживание гипертекстов
Одной из главных трудностей в
поддержании гипертекстовой структуры является то, что
ссылки на другие страницы могут становиться " мертвыми
ссылками" в случае, когда страница переносится на другой
сервер или cовсем удаляется. На сегодняшний день не
существует общего механизма, который смог бы уведомить
обслуживающий персонал сервера, на котором содержится
документ с сылками на подобную страницу, о том, что она
изменилась или вобще удалена. Некоторые серверы,
например, CERN HTTPD, будут регистрировать неудачные
запросы, вызванные мертвыми ссылками наряду с
рекомендацией относительно страницы, где обнаружена
мертвая cсылка, предусматривая что данная проблема будет
решаться вручную. Это не очень практично, и в
действительности авторы документов обнаруживают, что их
документы содержат мертвые ссылки лишь тогда, когда их
извещают непосредственно, или, что бывает очень редко,
когда пользователь cам уведомляет их по электронной
почте.
Робот типа MOMSPIDER, который проверяет
ссылки, может помочь автору документа в обнаружении
подобных мертвых ссылок, и также может помогать в
обслуживании гипертекстовой структуры. Также роботы
могут помочь в поддержании содержания и самой структуры,
проверяя соответствующий HTML-документ, его соответствие
принятым правилам, регулярные модернизации, и т.д., но
это обычно не используется. Возможно, данные
функциональные возможности должны были бы быть встроены
при написании окружающей среды HTML-документа, поскольку
эти проверки могут повторяться в тех случаях, когда
документ изменяется, и любые проблемы при этом могут
быть решены немедленно.
3.1.3 Зазеркаливание
Зазеркаливание - популярный механизм
поддержания FTP архивов. Зеркало рекурсивно копирует
полное дерево каталогов по FTP, и затем регулярно
перезапрашивает те документы, которые изменились. Это
позволяет распределить загрузку между несколькими
серверами, успешно справиться с отказами сервера и
обеспечить более быстрый и более дешевый локальный
доступ, так же как и автономный доступ к архивам. В Сети
Интернет зазеркаливание может быть осуществлено с
помощью робота, однако на время написания этой статьи
никаких сложных средств для этого не существовало.
Конечно, существует несколько роботов, которые
восстанавливают поддерево страниц и сохраняют его на
локальном сервере, но они не имеют средств для
обновления именно тех страниц, которые изменились.
Вторая проблема - это уникальность страниц, которая
состоит в том, что ссылки в скопированных страницах
должны быть перезаписаны там, где они ссылаются на
страницы, которые также были зазеркалены и могут
нуждаться в обновлении. Они должны быть измененены на
копии, а там, где относительные ссылки указывают на
страницы, которые не были зазеркалены, они должны быть
расширены до абсолютных ссылок. Потребность в механизмах
зазеркаливания по причинам показателей
производительности намного уменьшается применением
сложных кэширующих серверов, которые предлагают
выборочную модернизацию, что может гарантировать, что
кэшированный документ не обновился, и в значительной
степени самообслуживается. Однако, ожидается, что
cредства зазеркаливания в будущем будут развиваться
должным образом.
3.1.4 Исследование ресурсов
Возможно, наиболее захватывающее
применение роботов - использование их при исследовании
ресурсов. Там, где люди не могут справиться с огромным
количеством информации, довольно возможность переложить
всю работу на компьютер выглядит довольно
привлекательно. Существует несколько роботов, которые
собирают информацию в большей части Интернет и передают
полученные результаты базе данных. Это означает, что
пользователь, который ранее полагался исключительно на
ручную навигацию в Сети, теперь может объединить поиск с
просмотром страниц для нахождения нужной ему информации.
Даже если база данных не содержит именно того, что ему
нужно, велика вероятность того, что в результате этого
поиска будет найдено немало ссылок на страницы, которые,
в свою очередь, могут ссылаться на предмет его поиска.
Второе преимущество состоит в том, что
эти базы данных могут автоматически обновляться за
определенный период времени так, чтобы мертвые ссылки в
базе данных были обнаружены и удалены, в отличие от
обслуживания документов вручную, когда проверка часто
является спонтанной и не полной. Использование роботов
для исследования ресурсов будет обсуждаться ниже.
3.1.5 Комбинированное использование
Простой робот может выполнять более чем
одну из вышеупомянутых задач. Например робот RBSE Spider
выполняет статистический анализ запрошенных документов и
обеспечивает ведение базы данных ресурсов. Однако,
подобное комбинированное использование встречается, к
сожалению, весьма редко.
3.2 Повышение затрат и потенциальные опасности при
использовании поисковых роботов
Использование роботов может дорого
обойтись, особенно в случае, когда они используются
удаленно в Интернете. В этом разделе мы увидим, что
роботы могут быть опасны, так как они предъявляют
слишком высокие требования к Сети.
3.2.1 Сетевой ресурс и загрузка сервера
Роботы требуют значительной пропускной
способности канала сервера. Во-первых роботы работают
непрерывно в течение длительных периодов времени, часто
даже в течение месяцев. Чтобы ускорить операции, многие
роботы делают параллельные запросы страниц с сервера,
ведущие в последствии к повышенному использованию
пропускной способности канала сервера. Даже удаленные
части Сети могут чувствовать сетевую нагрузку на ресурс,
если робот делает большое количество запросов за
короткий промежуток времени. Это может привести к
временной нехватке пропускной способности сервера для
других пользователей, особенно на серверах с низкой
пропускной способностью, поскольку Интернет не имеет
никаких cредств для балансирования нагрузки в
зависимости от используемого протокола.
Традиционно Интернет воспринимался как
"свободный", поскольку индивидуальные пользователи не
должны были платить за его использование. Однако теперь
это поставлено под сомнение, так как особенно
корпоративные пользователи платят за издержки, связанные
с использованием Сети. Компания может чувствовать, что
ее услуги (потенциальным) клиентам стоят оплаченных
денег, а страницы, автоматически переданные роботам -
нет.
Помимо предъявления требований к Сети,
робот также предъявляет дополнительные требования к
самому серверу. В зависимости от частоты, с которой он
запрашивает документы с сервера, это может привести к
значительной загрузке всего сервера и снижению скорости
доступа других пользователей, обращающихся к серверу. К
тому же, если главный компьютер используется также для
других целей, это может быть вообще неприемлемо. В
качестве эксперимента автор управлял моделированием 20
параллельных запросов от своего сервера,
функционирующего как Plexus сервер на Sun 4/330.
Несколько минут машину, замедленную использованием
паука, вообще невозможно было использовать. Этот эффект
можно почувствовать даже последовательно запрашивая
страницы.
Все это показывает, что нужно избегать
ситуаций с одновременным запросом страниц. К сожалению,
даже современные браузеры (например, Netscape) создают
эту проблему, параллельно запрашивая изображения,
находящиеся в документе. Сетевой протокол HTTP оказался
неэффективным для подобных передач и как средство борьбы
с подобными эффектами сейчас разрабатываются новые
протоколы.
3.2.2 Обновление документов
Как уже было упомянуто, базы данных,
создаваемые роботами, могут автоматически обновляться. К
сожалению, до сих пор не имеется никаких эффективных
механизмов контроля за изменениями, происходящими в
Сети. Более того, нет даже простого запроса, который мог
бы определить, которая из cсылок была удалена,
перемещена или изменена. Протокол HTTP обеспечивает
механизм "If-Modified-Since", посредством которого агент
пользователя может определить время модификации
кэшированного документа одновременно с запросом самого
документа. Если документ был изменен, тогда сервер
передаст только его содержимое, так как этот документ
уже был прокэширован.
Это средство может использоваться
роботом только в том случае, если он сохраняет отношения
между итоговыми данными, которые извлекаются из
документа: это сама ссылка и отметка о времени, когда
документ запрашивался. Это ведет к возникновению
дополнительных требований к размеру и сложности базы
данных и широко не применяется.
3.3 Роботы / агенты клиента
Загрузка Сети является особой
проблемой, связанной с применением категории роботов,
которые используются конечными пользователями и
реализованы как часть веб-клиента общего назначения
(например, Fish Search и tkWWW робот). Одной из
особенностей, которая является обычной для этих роботов,
является способность передавать обнаруженную информацию
поисковым системам при перемещении по Сети. Это
преподносится как усовершенствование методов
исследования ресурсов, так как запросы к нескольким
удаленным базам данных осуществляются автоматически.
Однако, по мнению автора, это неприемлемо по двум
причинам. Во-первых, операция поиска приводит к большей
загрузке сервера, чем даже простой запрос документа,
поэтому обычному пользователю могут быть причинены
значительные неудобства при работе на нескольких
серверах с большими издержками, чем обычно. Во-вторых,
ошибочно предполагать, что одни и те же ключевые слова
при поиске одинаково релевантны, синтаксически
правильны, не говоря уже об оптимальности для различных
баз данных, и диапазон баз данных полностью скрыт от
пользователя. Например, запрос " Форд и гараж " мог бы
быть послан базе данных, хранящей литературу 17-ого
столетия, базе данных, которая не поддерживает булевские
операторы или базе данных, которая определяет, что
запросы относительно автомобилей должны начаться со
слова "автомобиль: ". И пользователь даже не знает это.
Другой опасный аспект использования
клиентского робота заключается в том, что как только он
был распространен по Сети, никакие ошибки уже не могут
быть исправлены, не могут быть добавлены никакие знания
проблемных областей и никакие новые эффективные свойства
не могут его улучшить, как не каждый пользователь
впоследствии будет модернизировать этого робота самой
последней версией.
Наиболее опасный аспект, однако -
большое количество возможных пользователей роботов.
Некоторые люди, вероятно, будут использовать такое
устройство здраво, то есть ограничиваться некоторым
максимумом ссылок в известной области Сети и в течение
короткого периода времени, но найдутся и люди, которые
злоупотребят им из-за невежества или высокомерия. По
мнению автора, удаленные роботы не должны передаваться
конечным пользователям, и к счастью, до сих пор
удавалось убедить по крайней мере некоторых авторов
роботов не распространять их открыто.
Даже не учитывая потенциальную
опасность клиентских роботов, возникает этический
вопрос: где использование роботов может быть полезно
всему Интернет-сообществу для объединения всех доступных
данных, а где они не могут быть применены, поскольку
принесут пользу только одному пользователю.
"Интеллектуальные агенты" и " цифровые
помощники", предназначенные для использования конечным
пользователем, который ищет информацию в Интернет,
являются в настоящее время популярной темой исследований
в компьютерной науке, и часто рассматриваются как
будущее Сети. В то же время это действительно может
иметь место, и уже очевидно, что автоматизация неоценима
для исследований ресурсов, хотя требуется проводить еще
больше исследований для того, чтобы их сделать их
использование эффективным. Простые управляемые
пользователем роботы очень далеки от интеллектуальных
сетевых агентов: агент должен иметь некоторое
представление о том, где найти определенную информацию
(то есть какие услуги использовать) вместо того, чтобы
искать ее вслепую. Рассмотрим ситуацию, когда человек
ищет книжный магазин; он использует "Желтые страницы"
для области, в которой он проживает, находит список
магазинов, выбирает из них один или несколько, и
посещает их. Клиентский робот шел бы во все магазины в
области, спрашивая о книгах. В Сети, как и в реальной
жизни, это неэффективно в малом масштабе, и совсем
должно быть запрещено в больших масштабах.
3.3.1 Плохие программные реализации роботов
Нагрузка на сеть и серверы иногда
увеличивается плохой программной реализацией особенно
недавно написанных роботов. Даже если протокол и ссылки,
посланные роботом, правильны, и робот правильно
обрабатывает возвращенный протокол (включая другие
особенности вроде переназначения), имеется несколько
менее очевидных проблем.
Автор наблюдал, как несколько похожих
роботов управляют вызовом его сервера. В то время, как в
некоторых случаях негативные последствия были вызваны
людьми, использующими свой сайт для испытаний (вместо
локального сервера), в остальных случаях стало очевидно,
что они были вызваны плохим написанием самого робота.
При этом могут произойти повторные запросы страниц в том
случае, если нет никаких записей об уже запрошенных
ссылках (что является непростительным), или когда робот
не распознает, когда несколько ссылок синтаксически
эквивалентны, например, где различаются DNS псевдонимы
для одного и того же адреса IP, или где ссылки не могут
быть обработаны роботом, например " foo/bar/ ../baz.html
" является эквивалентным "foo/baz.html".
Некоторые роботы иногда запрашивают документы типа
GIF и PS, которые они не могут обработать и поэтому
игнорируют.
Другая опасность состоит в том, что
некоторые области Сети являются почти бесконечными.
Например, рассмотрим сценарий, который возвращает
страницу со ссылкой на один уровень, расположенный ниже.
Он начнет, например, с " /cgi-bin/pit / ", и продолжит с
" /cgi-bin/pit/a / ", " /cgi-bin/pit/a/a / ", и т.д.
Поскольку такие cсылки могут заманить в робота в
ловушку, их часто называют "черными дырами".
4. Проблемы при каталогизации информации
Бесспорен тот факт, что базы данных,
наполняемые роботами, популярны. Автор непосредственно
регулярно использует такие базы данных для нахождения
нужных ему ресурсов. Однако, имеется несколько проблем,
которые ограничивают применение роботов для исследования
ресурсов в Сети. Одна из них заключается в том, что
здесь находится слишком много документов, и все они
постоянно динамически изменяются.
Одной из мер эффективности подхода к
поиску информации является "отзыв" (recall), содержащий
информацию о всех релевантных документах, которые были
найдены. Брайен Пинкертон утверждает, что отзыв в
индексирующих системах Интернет является вполне
приемлемым подходом, так как обнаружение достаточно
релевантных документов не проблема. Однако, если
сравнивать все множенство информации, доступной в
Интернет, с информацией в базе данных, созданной
роботом, то отзыв не может быть слишком точным,
поскольку количество информации огромно и она очень
часто изменяется. Так что практически база данных может
не содержать специфического ресурса, который доступен в
Интернет в данный момент, и таких документов будет
множество, поскольку Сеть непрерывно растет.
4.1. Определение роботом, какую информацию
включать / исключать
Робот не может автоматически
определить, была ли данная страница в Сети включена в
его индекс. К тому же веб-сервера в Интернет могут
содержать документы, которые являются релевантными
только для локального контекста, документы, которые
существуют временно, и т.д. На практике роботы сохраняют
почти всю информацию о том, где они побывали. Заметьте,
что, даже если робот смог определить, должна ли
указанная страница быть исключена из его базы данных, он
уже понес накладные расходы на запрос самого файла, а
робот, который решает игнорировать большой процент
документов, очень расточителен. Пытаясь исправить эту
ситуацию, Интернет-сообщество приняло " Стандарт
исключений для роботов". Этот стандарт описывает
использование простого структурированного текстового
файла, доступного в известном месте на сервере
("/robots.txt") и используемого для того, чтобы
определить, какая из частей их ссылок должна
игнорироваться роботами. Это средство может быть также
использовано для того, чтобы предупредить роботов о
черных дырах. Каждому типу роботов можно передавать
определенные команды, если известно, что данный робот
специализируется в конкретной области. Этот стандарт
является свободным, но его очень просто осуществить и в
нем имеется значительное давление на роботов с попыткой
их подчинения.
4.2. Формат файла /robots.txt.
Файл /robots.txt предназначен для
указания всем поисковым роботам индексировать
информационные сервера так, как определено в этом файле,
т.е. только те директории и файлы сервера, которые НЕ
описаны в /robots.txt. Это файл должен содержать 0 или
более записей, которые связаны с тем или иным роботом
(что определяется значением поля agent_id), и указывают
для каждого робота или для всех сразу что именно им НЕ
НАДО индексировать. Тот, кто пишет файл /robots.txt,
должен указать подстроку Product Token поля User-Agent,
которую каждый робот выдает на HTTP-запрос
индексируемого сервера. Например, нынешний робот Lycos
на такой запрос выдает в качестве поля User-Agent:
Lycos_Spider_(Rex)/1.0 libwww/3.1
Если робот Lycos не нашел своего
описания в /robots.txt - он поступает так, как считает
нужным. При создании файла /robots.txt следует учитывать
еще один фактор - размер файла. Поскольку описывается
каждый файл, который не следует индексировать, да еще
для многих типов роботов отдельно, при большом
количестве не подлежащих индексированию файлов размер
/robots.txt становится слишком большим. В этом случае
следует применять один или несколько следующих способов
сокращения размера /robots.txt:
- указывать директорию, которую не следует
индексировать, и, соответственно, не подлежащие
индексированию файлы располагать именно в ней
- создавать структуру сервера с учетом упрощения
описания исключений в /robots.txt
- указывать один способ индексирования для всех
agent_id
- указывать маски для директорий и файлов
4.3. Записи (records) файла /robots.txt
Общее описание формата записи.
[ # comment string NL ]*
User-Agent: [ [ WS ]+ agent_id ]+ [ [ WS ]* # comment string ]? NL
[ # comment string NL ]*
Disallow: [ [ WS ]+ path_root ]* [ [ WS ]* # comment string ]? NL
[
# comment string NL
|
Disallow: [ [ WS ]+ path_root ]* [ [ WS ]* # comment string ]? NL
]*
[ NL ]+
Параметры
Описание параметров, применяемых в записях
/robots.txt
- [...]+ Квадратные скобки со следующим за ними
знаком + означают, что в качестве параметров должны
быть указаны один или несколько терминов. Например,
после "User-Agent:" через пробел могут быть указаны
один или несколько agent_id.
- [...]* Квадратные скобки со следующим за ними
знаком * означают, что в качестве параметров могут
быть указаны ноль или несколько терминов. Например, Вы
можете писать или не писать комментарии.
- [...]? Квадратные скобки со следующим за ними
знаком ? означают, что в качестве параметров могут
быть указаны ноль или один термин. Например, после
"User-Agent: agent_id" может быть написан комментарий.
- ..|.. означает или то, что до черты, или то, что
после.
- WS один из символов - пробел (011) или табуляция
(040)
- NL один из символов - конец строки (015) , возврат
каретки (012) или оба этих символа (Enter)
- User-Agent: ключевое слово (заглавные и прописные
буквы роли не играют). Параметрами являются agent_id
поисковых роботов.
- Disallow: ключевое слово (заглавные и прописные
буквы роли не играют). Параметрами являются полные
пути к неиндексируемым файлам или директориям.
- # начало строки комментариев, comment string -
собственно тело комментария.
- agent_id любое количество символов, не включающих
WS и NL, которые определяют agent_id различных
поисковых роботов. Знак * определяет всех роботов
сразу.
- path_root любое количество символов, не включающих
WS и NL, которые определяют файлы и директории, не
подлежащие индексации.
4.4. Расширенные комментарии формата.
Каждая запись начинается со строки
User-Agent, в которой описывается каким или какому
поисковому роботу эта запись предназначается. Следующая
строка: Disallow. Здесь описываются не подлежащие
индексации пути и файлы. КАЖДАЯ запись ДОЛЖНА иметь как
минимум эти две строки (lines). Все остальные строки
являются опциями. Запись может содержать любое
количество строк комментариев. Каждая строка комментария
должна начинаться с символа # . Строки комментариев
могут быть помещены в конец строк User-Agent и Disallow.
Символ # в конце этих строк иногда добавляется для того,
чтобы указать поисковому роботу, что длинная строка
agent_id или path_root закончена. Если в строке
User-Agent указано несколько agent_id, то условие
path_root в строке Disallow будет выполнено для всех
одинаково. Ограничений на длину строк User-Agent и
Disallow нет. Если поисковый робот не обнаружил в файле
/robots.txt своего agent_id, то он игнорирует
/robots.txt.
Если не учитывать специфику работы каждого поискового
робота, можно указать исключения для всех роботов сразу.
Это достигается заданием строки
User-Agent: *
Если поисковый робот обнаружит в файле /robots.txt
несколько записей с удовлетворяющим его значением
agent_id, то робот волен выбирать любую из них.
Каждый поисковый робот будет определять
абсолютный URL для чтения с сервера с использованием
записей /robots.txt. Заглавные и строчные символы в
path_root ИМЕЮТ значение.
Пример 1:
User-Agent: *
Disallow: /
User-Agent: Lycos
Disallow: /cgi-bin/ /tmp/
В примере 1 файл /robots.txt содержит
две записи. Первая относится ко всем поисковым роботам и
запрещает индексировать все файлы. Вторая относится к
поисковому роботу Lycos и при индексировании им сервера
запрещает директории /cgi-bin/ и /tmp/, а остальные -
разрешает. Таким образом сервер будет проиндексирован
только системой Lycos.
4.5. Определение порядка перемещения по Сети
Определение того, как перемещаться по
Сети является относительной проблемой. Учитывая, что
большинство серверов организовано иерархически, при
первом перемещении вширь по ссылкам от вершины на
ограниченной глубине вложенности ссылок, более вероятно
быстрее найти набор документов с более высоким уровнем
релевантности и услуг, чем при перемещении в глубину
вложенности ссылок, и поэтому этот метод намного
предпочтительнее для исследования ресурсов. Также при
перемещении по ссылкам первого уровня вложенности более
вероятно найти домашние страницы пользователей с
ссылками к другим, потенциально новым, серверам, и
поэтому при этом существует большая вероятность найти
новые сайты.
4.6. Подведение итоговых данных
Проиндексировать произвольный документ,
находящийся в Сети, очень сложно. Первые роботы просто
сохраняли название документа и якори (anchor) в самом
тексте, но новейшие роботы уже используют более
продвинутые механизмы и вообще рассматривают полное
содержание документа.
Эти методы являются хорошими общими
мерами и могут автоматически применяться для всех
страниц, но, к сожалению, не могут быть столь же
эффективны, как индексация страницы самим ее автором.
Язык HTML обеспечивает автора документа средством для
того, чтобы присоединить к нему общую информацию. Это
средство заключается в определении элемента
, например "
. Однако, здесь
не определяется никакая семантика для специфических
значений атрибутов данного HTML-тэга, что серьезно
ограничивает его применение, а поэтому и его
полноценность. Это ведет к низкой "точности"
относительно общего количества запрошенных документов,
которые являются релевантными для конкретного запроса.
Включение особенностей типа применения булевских
операторов, нахождение весов слов, как это делается в
WAIS или обратной связи для релевантности, могут
улучшить точность документов, но учитывая, что
информация, находящаяся в данный момент в Интернет,
чрезвычайно разнообразна, эта проблема продолжает быть
серьезной и наиболее эффективные пути ее решения пока не
найдены.
5. Заключение
Данная работа, естественно, не
претендует ни на полноту, ни на точность изложения.
Большая часть материала была взята из иностранных
источников, в частности, основой послужили обзоры
Мартина Костера (Martijn Koster). Поэтому я не исключаю
возможности, что данный документ содержит какие-либо
неточности, связанные как с переводом, так и с
феноменально быстрым развитием информационных
технологий. Однако, я все же надеюсь, что данная статья
окажется полезной всем, кого интересует Всемирная Сеть
Интернет, ее развитие и будущее.