1.1. Что такое "поисковая машина"
Каждому из нас в определенный момент времени бывает необходима информация, отсутствующая среди записей, заметок и данных на нашем компьютере. Где в таком случае вы будете ее искать? Одним из наиболее простых и удобных способов поиска является Интернет (далее также "Сеть"). Здесь есть все — техническая и экономическая информация, справочники и научные издания, расписания транспорта и онлайновые магазины, книги и курсы валют. Все можно найти, не отрываясь от стула. Но у этой хорошей стороны Интернета есть и обратная сторона — количество информации в Сети растет даже не по часам, а по минутам и секундам. Найти нужную информацию обычным серфингом уже невозможно. Простой и удобный протокол HTTP, используемый для серфинга, удобен для навигации и просмотра страниц, но совершенно не предназначен для поиска.
Первым шагом на пути систематизации информации, размещаемой в Интернете, стало создание каталогов сайтов, в которых ссылки на ресурсы группировались по тематическому признаку. Так построено большинство современных каталогов, но началом всему стал проект Yahoo! открытый в 1994 году. Вторым шагом после создания каталога стал поиск по размещенным в нем ссылкам. Понятно, что это был поиск не по всем ресурсам Интернета, а лишь по тем, которые присутствовали в каталоге. Даже сегодня, спустя десятилетия после появления первых каталогов, в них присутствует лишь малая толика интернет-ресурсов. В одном из самых крупных каталогов — DMOZ (Open Directory Project) находятся ссылки на 4 миллиона сайтов, распределенных по 590 000 категорий, а в базе Яндекса размещена информация свыше чем о 2 278 900 000 документов. Показатели для поиска несравнимые.
Поэтому не удивительно, что почти одновременно с появлением каталогов, появились и поисковые машины. Первой из них стал проект WebCrawler, появившийся в 1994 году. Следом за ним открылись поисковые системы Lycos и AltaVista, а в 1997 году Сергей Брин и Ларри Пейдж создали Google. В том же году была официально анонсирована и поисковая система Яндекс, ставшая самой популярной в русскоязычной части Интернета.
1.1.1. Компоненты поисковых машин
Информация в Сети не только пополняется, но и постоянно изменяется, но об этих изменениях никто никому не сообщает. Отсутствует единая система занесения информации, одновременно доступная для всех пользователей Интернета. Поэтому с целью структурирования информации, предоставления пользователям удобных средств поиска данных и были созданы поисковые машины.
Поисковые системы бывают разных видов. Одни из них выполняют поиск информации на основе того, что в них заложили люди. Это могут быть каталоги, куда сведения о сайтах, их краткое описание либо обзоры заносят редакторы. Поиск в них ведется среди этих описаний.
Вторые собирают информацию в Сети, используя специальные программы. Это поисковые машины, состоящие, как правило, из трех основных компонентов:
□ Агента;
□ Индекса;
□ Поискового механизма.
Агент, или более привычно — паук, робот (в англоязычной литературе — spider, crawler), в поисках информации обходит сеть или ее определенную часть. Этот робот хранит список адресов (URL), которые он может посетить и проиндексировать, с определенной для каждой поисковой машины периодичностью скачивает соответствующие ссылкам документы и анализирует их. Полученное содержимое страниц сохраняется роботом в более компактном виде и передается в Индекс. Если при анализе страницы (документа) будет обнаружена новая ссылка, робот добавит ее в свой список. Поэтому любой документ или сайт, на который есть ссылки, может быть найден роботом. И наоборот, если на сайт или любую его часть нет никаких внешних ссылок, робот может его не найти.
Робот — это не просто сборщик информации. Он обладает довольно развитым "интеллектом". Роботы могут искать сайты определенной тематики, формировать списки сайтов, отсортированных по посещаемости, извлекать и обрабатывать информацию из существующих баз данных, могут выполнять переходы по ссылкам различной глубины вложенности. Но в любом случае, всю найденную информацию они передают базе данных (Индексу) поисковой машины.
Поисковые роботы бывают различных типов:
□ Spider (паук) — это программа, которая скачивает веб-страницы тем же способом, что и браузер пользователя. Отличие состоит в том, что браузер отображает информацию, содержащуюся на странице (текстовую, графическую и т. д.), паук же не имеет никаких визуальных компонентов и работает напрямую с HTML-текстом страницы (аналогично тому, что вы увидите, если включите просмотр HTML-кода в вашем браузере).
□ Crawler (краулер, "путешествующий" паук) — выделяет все ссылки, присутствующие на странице. Его задача — определить, куда дальше должен идти паук, основываясь на ссылках или исходя из заранее заданного списка адресов. Краулер, следуя по найденным ссылкам, осуществляет поиск новых документов, еще неизвестных поисковой системе.
□ Индексатор разбирает страницу на составные части и анализирует их. Выделяются и анализируются различные элементы страницы, такие как текст, заголовки, структурные и стилевые особенности, специальные служебные HTML-теги и т. д.
Индекс — это та часть поисковой машины, в которой осуществляется поиск информации. Индекс содержит все данные, которые были переданы ему роботами, поэтому размер индекса может достигать сотен гигабайт. Практически, в индексе находятся копии всех посещенных роботами страниц. В случае если робот обнаружил изменение на уже проиндексированной им странице, он передает в Индекс обновленную информацию. Она должна замещать имеющуюся, но в ряде случаев в Индексе появляется не только новая, но остается и старая страница.
Поисковый механизм — это тот самый интерфейс, с помощью которого посетитель взаимодействует с Индексом. Через интерфейс пользователи вводят свои запросы и получают ответы, а владельцы сайтов регистрируют их (и эта регистрация — еще один способ донести до робота адрес своего сайта). При обработке запроса поисковый механизм выполняет отбор соответствующих ему страниц и документов среди многих миллионов проиндексированных ресурсов и выстраивает их в порядке важности или соответствия запросу.
Названные выше компоненты не обязательно входят в состав поисковой машины так, как они здесь описаны. У разных поисковиков реализация может отличаться друг от друга. К примеру, связка Spider+Crawler+Индексатор может быть выполнена в виде единой программы, которая скачивает известные веб-страницы, анализирует их и ищет по ссылкам новые ресурсы.
1.1.2. Характеристики поисковых машин
В статье, посвященной поисковой машине Rambler (http://www.rambler.ru/ doc/architecture.shtml), называются основные характеристики, которые могут быть применены к любым поисковикам:
□ полнота;
□ точность;
□ актуальность;
□ скорость;
□ наглядность.
Полнота поиска характеризуется отношением количества найденных по запросу документов к общему количеству документов в Интернете, соответствующих данному запросу. Если по запросу "кристаллическая решетка" будет найдено 150 документов, а общее количество документов в Интернете, соответствующее этому запросу, составляет 1000, то полнота поиска составит 0,15. (Эта величина приблизительная, поскольку неизвестно точно, сколько же на самом деле существует в Интернете страниц, отвечающих условию поиска.) Чем более полно проанализированы и занесены в Индекс документы, тем выше будет показатель полноты поиска.
Точность поиска определяется как степень соответствия найденных документов запросу пользователя. Допустим, мы хотим найти документы, в которых встречается выражение "сын знахаря". В результатах поиска мы увидим документы, в которых встречается точно такое выражение. Но присутствуют и документы, содержащие искомые слова, но не выражения, например: "родители привозят сына в небольшой городок на Адриатическом побережье, к местному знахарю". И если всего найдено 200 документов, из которых только в 80 встречается именно искомое словосочетание, то точность поиска будет оценена как 80/200 (0,4). Чем точнее поиск, тем выше вероятность, что пользователь найдет нужные документы, тем меньше будет избыточной, лишней информации.