© Данная статья была опубликована в № 03/2006 журнала "Информатика" издательского дома "Первое сентября". Все права принадлежат автору и издателю и охраняются.      Главная страница "Первого сентября"
     Главная страница журнала "Информатика"
     Содержание № 03/2006
 Бороться


ПРЕДЛАГАЮ КОЛЛЕГАМ

А.И. Сенокосов

Бороться и искать, найти!

Часть 1. Поиск текстов в Интернете. Основные понятия

Для начала напомним, что история WWW (World Wide Web — Мировой информационной паутины) началась в марте 1989 года, когда Тим Бернерс-Ли из Европейской лаборатории физики элементарных частиц (CERN) предложил новый способ обмена результатами исследований и идеями между участниками коллектива исследователей-физиков, работавших в разных странах. Для передачи документов и установления связи предлагалось использовать просто систему гипертекста (тогда никто еще не задумывался о возможности передачи фотографических изображений, звука или видео; речь шла только о распространении текстовых документов, содержащих гиперссылки на фрагменты других таких же текстовых документов, но располагающихся на удаленных компьютерах, подключенных к глобальной сети Интернет).

Собственно, гипертекст не был изобретением Бернерса-Ли. Любой, кто пользовался справочной системой какой-либо программы, это подтвердит. Да и HTML вовсе не был первым языком описания страниц. Но в нем впервые были связаны воедино не просто отдельные главы одного документа, а документы, располагающиеся на самых различных серверах Интернета по всему земному шару.

До конца 1992 года программа оставалась лишь частью академических исследований — демонстрировалась на семинарах в CERN'е, да еще была представлена на конференции “Гипертекст'91”.

Переломный момент наступил в декабре 1992 г.: Марк Андрессен вместе с Эриком Бина задумали написать свою собственную программу-клиент для просмотра гипертекстовых WWW-документов. И в марте следующего года (всего через три месяца!) на свет появилась Mosaic — мощная программа c графическим интерфейсом для работы с гипертекстовыми страницами и другими ресурсами Интернета. С этого момента пользователь уже мог не вдаваться в технические подробности реализации протоколов компьютерных сетей, а, используя очень простой и удобный инструмент, посвятить всего себя работе с интересующей его информацией, распределенной по огромному множеству компьютеров, расположенных в разных городах, странах и даже на разных континентах.

Mosaic в кратчайший срок стала самой быстро распространяющейся по миру программой. Таким образом, недавний выпускник колледжа Марк Андрессен добавил последний штрих, позволивший превратить всю Сеть, насчитывавшую в то время от одного до двух миллионов компьютеров, в единый гигантский суперисточник информации, работа с которым ничуть не труднее, чем для 10-летнего ребенка запуск любимой игры на домашнем персональном компьютере.

С каждым месяцем, днем и часом в гигантской паутине гипертекстовых связей появляются все новые и новые мега- и гигабайты информации, и теперь всякий исследователь, прокладывающий себе путь в необъятных просторах киберпространства, с первых же минут ощущает потребность в надежном путеводителе. Дэвид Фило и Джерри Янг из Станфордского университета в апреле 1994 года пришли к выводу, что у каждого из них накопилось такое большое количество ссылок на самые разные информационные источники, что пора каким-то образом их упорядочить.

Так родилась идея создания специализированной базы данных, которая вскоре стала использоваться тысячами пользователей для эффективного поиска информации в Сети. Называется эта поисковая система “Yahoo!”. Для широких масс коллекционеров совершенно бесполезной информации сообщаем, что расшифровывается это просто и понятно: “Yet Another Hierarchical Officious Oracle” (“Еще один иерархический официозный оракул”).

В начале следующего, 1995 года уже упоминавшийся выше Марк Андрессен помог Фило и Янгу переместить их детище на более мощные компьютеры Netscape, и вскоре система Yahoo! стала самым популярным и полным иерархическим предметно-ориентированным путеводителем по Всемирной паутине и Интернету в целом. В Yahoo! все рассортировано по темам и категориям, вся информация разложена по полочкам так, что вроде бы даже самому ленивому пользователю не составит большого труда найти искомый ресурс в необозримом пространстве Сети…

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

Итак, когда говорят о поиске информации в Интернете, неявным образом имеют в виду работу с поисковыми машинами.

Поисковые машины — это не просто специальные сайты в глобальной сети, которые помогают найти нужную информацию. Это очень крупные предприятия IT-индустрии, на которых работают тысячи самых различных специалистов. В качестве примера можно привести компанию Google, для которой прошедший 2005 год стал звездным. И дело не только в том, что ей принадлежит один из самых мощных поисковых серверов, но и в постоянном, порой революционном развитии информационных технологий, связанных с Интернетом. Она одна из первых предложила пользователям сотовых телефонов специализированную электронную почту, организовала поистине сенсационный проект Google Earth, давший возможность интернет-пользователям взглянуть на нашу планету с высоты полета спутников (заметим, совершенно бесплатно). Поражает воображение и новый проект Google Books, посвященный оцифровке максимально возможного количества бумажных книг и размещению их в Интернете. Также стоит напомнить, что Google работает над системой языкового перевода (Google Translate), который в перспективе сделает доступным все ресурсы Интернета любому пользователю, на каком бы языке он ни говорил.

Все это позволило не такой уж большой по индустриальным меркам компьютерной компании собрать гигантское количество инвестиций и обогнать по капитализации (стоимости акций) крупнейшую медиакомпанию Time Warner со всем ее Голливудом. Понятно, что авторитетное издание Financial Times особенно долго предварительно не думало, назвав “людьми 2005 года” руководителей Google Сергея Брина и Ларри Пейджа (что, кстати, дополнительно подняло стоимость ее акций более чем на 2%. Теперь рыночная стоимость Google составляет свыше 120 миллиардов долларов, приближаясь к стоимости “голубого гиганта” — IBM (130 миллиардов долларов)).

Итак, разберем поподробнее, как же работает то, с чего, собственно, и начался взлет этой компании, признанного лидера современного Интернета, — поисковая машина.

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

Чтобы найти информацию о сотнях миллионов существующих web-страниц, поисковая машина применяет специальную программу-робот. Эта программа еще называется “спайдер” (spider — от англ. “паук”) и служит для построения списка слов, найденных на странице. Процесс построения такого списка называется web-краулинг (Web crawling — “ползанье по паутине”). Чтобы построить и зафиксировать полезный, т.е. имеющий значение, список слов, поисковый паук должен просмотреть сотни тысяч и миллионы страниц.

Как же начинает программа-паук свое путешествие по сети? Обычно стартовой точкой являются наиболее крупные мировые серверы и очень популярные web-страницы. Паук начинает свой путь с такого сайта, заносит в базу данных (индексирует) все найденные слова и продолжает свое движение далее — по ссылкам на другие сайты. Таким образом, робот-паук начинает охватывать всё большие куски web-пространства.

Google.com начинался с достаточно стандартной программы-паука. Сергей Брин и Ларри Пейдж рассказали об истории ее создания и общих принципах действия. Обычно поиск в Интернете начинался с использованием трех пауков. Каждый паук поддерживал до 300 одновременно открытых соединений с web-страницами. При пиковой загрузке, с использованием четырех пауков, система Google была способна обработать более 100 страниц в секунду. Чтобы ускорить работу своих “пауков”, компания обзавелась собственным DNS-сервером, сведя до минимума временныRе затраты на индексацию страниц. (Напомним, что именно DNS-серверы позволяют навести единый порядок в Сети, сопоставляя буквенному названию web-сайта его истинный 16-ричный адрес.)

Разумеется, сейчас мощности системы возросли, но принцип остался неизменным. Итак, когда Google-робот посещает HTML-страницу, он принимает во внимание 2 вещи:

— слова (текст) на странице;

— место их расположения.

Слова, расположенные в служебных тегах-контейнерах, таких, как <TITLE>, <META> и др., помечаются как особо важные для пользовательских поисковых запросов. Google-паук построен так, чтобы индексировать каждое подобное слово на странице, за исключением междометий и артиклей. Вообще разные программы-пауки имеют каждая свой подход к индексации. Впрочем, все подходы и алгоритмы в конечном итоге направлены на то, чтобы заставить роботов-пауков работать быстрее и эффективнее. К примеру, некоторые поисковые роботы отслеживают при индексации не только слова в контейнере <TITLE>, ссылках и до 100 наиболее часто используемых на странице слов, но и каждое из слов первых 20 строк текстового содержания.

Немного подробнее о метатегах. Они позволяют владельцу web-страницы самому задавать ключевые слова и понятия, которые определяют суть ее содержания. Это очень полезный инструмент, особенно когда эти ключевые слова нечасто попадаются в тексте страницы. В этом случае метатеги могут направить поисковый робот к нужному выбору ключевых слов для индексации страницы. Разумеется, существует вероятность того, что в метатегах сайта, скажем, мебельного магазина появятся слова “Мария Шарапова”, что резко увеличит его посещаемость, что никак не связано с содержанием самой страницы. Вообще-то поисковые роботы борются с этим путем, например, сравнения метатегов и содержимого web-страницы, но на практике такая борьба далеко не всегда приводит к успеху.

Как только пауки закончили свою работу по нахождению новых web-страниц, поисковые машины должны разместить всю найденную информацию так, чтобы было удобно в дальнейшем ею пользоваться. Здесь имеют значение 2 ключевых фактора:

— информация, сохраненная вместе с данными;

— метод, которым эта информация проиндексирована.

Фактически это задача создания эффективной базы данных, способной отвечать на миллионы запросов в течение одного часа (для примера — нагрузка на отечественную поисковую машину Яндекс составляет в среднем 9–10 миллионов запросов в день).

В простейшем случае можно было бы просто поместить в базу данных слово и URL-адрес, где оно находится. Но это сделало бы поисковик совсем примитивным инструментом, так как нет никакой информации о том, в какой части документа находится это слово (в метатегах или в обычном тексте), используется ли это слово один раз или многократно и содержится ли оно в ссылке на другой важный и близкий по теме ресурс. Другими словами, такой способ не позволит ранжировать сайты, не обеспечит представление пользователям результатов, отсортированных по частоте упоминания, и т.д.

Чтобы предоставить нам полезные данные, поисковики сохраняют не только информацию из слова и его URL-адрес. Поисковик может сохранить данные о количестве (частоте) упоминаний слова на странице, присвоить слову вес, что далее поможет выдавать поисковые листинги (результаты) на основе весового ранжирования по данному слову, с учетом его местонахождения (в ссылках, метатегах, титуле страницы и т.п.). У каждого коммерческого поисковика есть своя формула для вычисления веса ключевых слов при индексации. Это одна из причин, почему по одному и тому же поисковому запросу поисковики выдают совсем разные результаты.

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

Именно автоматически собираемый индекс и лежит в основе таких поисковых систем, как Google, Яндекс, Рамблер. Переоценить их значение невозможно — поиск по ключевым словам в одной базе данных, занимающий в худшем случае несколько секунд, принесет вам те же результаты, что и просмотр всех www-страниц во всем Интернете, на что даже самому современному компьютеру требуется не одна неделя. Предпринять же что-либо подобное вручную просто немыслимо.

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

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

Поскольку какая-либо классификация или оценивание материалов в системах такого рода отсутствует, к ним следует прибегать только тогда, когда вы точно знаете ключевые слова, относящиеся к тому, что вам нужно, — скажем, фамилию человека или несколько достаточно редких терминов из соответствующей области. Если же задать поиск по сколько-нибудь распространенным словам, то вам не хватит жизни, чтобы обойти все полученные в результате поиска URL-адреса — к примеру, индекс системы AltaVista содержит 11 миллиардов слов и словосочетаний, извлеченных из 30 миллионов www-страниц.

Возвращаясь к системе Yahoo!, с которой мы начали наш разговор, следует заметить, что принцип ее работы отличается от рассмотренного нами выше принципа автоматического индексирования.

Поисковые инструменты такого типа чаще всего называют предметными, или тематическими, каталогами (subject catalogs). Компания, владеющая таким каталогом, непрерывно ведет огромную работу, исследуя, описывая, каталогизируя и раскладывая по полочкам содержимое www-серверов и других сетевых ресурсов, разбросанных по всему миру. Результатом ее поистине титанических усилий является огромный и постоянно обновляющийся иерархический (древовидный) каталог, на верхнем уровне которого собраны самые общие категории, такие, как “бизнес”, “наука”, “искусство” и т.п., а элементы самого низкого уровня представляют собой ссылки на отдельные www-страницы и серверы вместе с кратким описанием их содержимого.

Гарантий того, что такой каталог действительно охватывает все содержимое WWW, вам, естественно, никто не даст — составляют каталог все-таки люди, а людям свойственно иногда уставать и ошибаться. Однако возможная неполнота и даже однобокость подбора материалов в таких каталогах с лихвой искупается тем, что пока еще не под силу никакому роботу, — осмысленностью отбора. Информация, которой коснулась рука человека, становится во всех смыслах дороже — практической пользы от нее больше, но и себестоимость такой информации выше.

Упорядоченность содержимого в тематическом каталоге делает его незаменимым в тех случаях, когда вы изначально не имеете почти никакой информации о цели своих поисков. Например, если вам нужно выяснить, как в мире обстоят дела с производством обуви для езды на велосипеде, вам не обязательно знать какие-либо ключевые слова или названия конкретных фирм: достаточно просто начать спускаться сверху вниз по иерархии (Business and Economy ® Companies ® Sports ® Cycling ® Shoes) — и в конце концов вы отыщете раздел, посвященный исключительно велосипедной обуви.

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

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

Предметные каталоги Интернета можно пересчитать буквально на пальцах, так как их создание и поддержка требуют огромных затрат. Наиболее известные каталоги — Yahoo!, WWW Virtual Library, Galaxy и некоторые другие.

Разумеется, использовать Yahoo! для поиска русскоязычной информации совершенно бесполезно. Но существует и двуязычный (русско-английский) каталог с ненавязчивым адресом www.ru. Каталог поддерживается интернет-провайдером компанией “Демос-Интернет”.

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

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

Предположим, вы захотели найти в интернет-магазине вашего региона телевизор подешевле. Запрос, состоящий из одного слова — “телевизор”, — это худшее, что может быть. Миллионы ссылок (более конкретно, 17 миллионов), которые вы получите в ответ на это, вряд ли приблизят вас к решению задачи. Разумеется, одними из первых среди этих ссылок будут адреса крупных торговых сетей, web-программисты которых позаботились о хорошей рекламе. Мало того, сама система Яндекс, зная ваш IP-адрес и, соответственно, сопоставляя с ним регион, предложит интернет-магазин (один-два), обслуживающий его. Но вот что касается более дешевого предложения — можно считать, что мы ни на шаг не продвинулись к достижению цели.

Вообще программное обеспечение поисковиков, анализирующее ваш запрос, за последние годы серьезно улучшилось, и если раньше искали в основном по одному-двум словам, то теперь вполне можно задать вопрос по-человечески. И действительно, запрос “Где купить дешевый телевизор” с отметкой своего региона выдает всего несколько ссылок, из которых парочка — на самом деле то, что мы искали.

Мало того, искомое нами словосочетание скорее всего характерно не для web-страниц, а для форумов и онлайновых дневников (блогов), которые стали в последнее время особенно популярными в Интернете. Система Яндекс предлагает провести поиск и в них. Здесь мы сможем найти ответ на свой вопрос уже из диалога (или монолога) конкретных людей.

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

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

Во-первых, есть возможность “искать в найденном” — для этого надо поставить флажок в форме поиска. Тогда следующий поиск будет вестись не по всем документам, а только по тем, которые были найдены в предыдущем поиске. Например, чтобы найти медицинские страницы про “рак” (а не астрологические), следует задать запрос “медицина онкология”, для определения области поиска. А затем, поставив галочку “искать в найденном”, — слово “рак”.

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

По умолчанию результаты поиска отсортированы по релевантности (частоте нахождения данного слова или словосочетания) и сгруппированы по серверам. Найденные документы могут иметь пометки “совпадение фразы”, “строгое соответствие” или “нестрогое соответствие” (по мере убывания релевантности). “Нестрогие” документы отделены от прочих горизонтальной серой линией. Если первым же найденным оказывается документ с подписью “нестрогое соответствие”, возможно, это значит, что стоит переформулировать запрос.

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

Если один из найденных документов ближе к искомой теме, чем остальные, нажмите на ссылку “найти похожие документы” (она расположена под кратким описанием этого документа). Яндекс проанализирует страницу и найдет документы, похожие на указанный вами. Но если эта страница была удалена с сервера и ее нет в памяти Яндекса, то вы получите сообщение “Запрошенный документ не найден”.

В конце каждой страницы с результатами поиска находятся ссылки “Поискать то же самое на: AltaVista — Google — Fast — Yahoo! — Rambler — Апорт!”.

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

Советы по поиску в Яндексе

Проверяйте орфографию

Если поиск не нашел ни одного документа, то вы, возможно, допустили орфографическую ошибку в написании слова. Проверьте правильность написания. Если вы использовали при поиске несколько слов, то посмотрите на количество каждого из слов в найденных документах (перед их списком после фразы “Результат поиска”). Какое-то из слов не встречается ни разу? Скорее всего его вы и написали неверно.

Используйте синонимы

Если список найденных страниц слишком мал или не содержит полезных страниц, попробуйте изменить слово. Например, вместо “рефераты”, возможно, больше подойдет “курсовые работы” или “сочинения”. Попробуйте задать для поиска три-четыре слова-синонима сразу. Для этого перечислите их через вертикальную черту (|). Тогда будут найдены страницы, где встречается хотя бы одно из них. Например, вместо “фотографии” попробуйте “фотографии | фото | фотоснимки”.

Ищите больше, чем по одному слову

Слово “психология” или “продукты” дадут при поиске поодиночке большое число бессмысленных ссылок. Добавьте одно или два ключевых слова, связанных с искомой темой. Например, “психология Юнга” или “продажа и покупка продовольствия”. Рекомендуем также сужать область вашего вопроса. Если вы интересуетесь автомобилями ГАЗа, то запросы “автомобиль Волга” или “автомобиль ГАЗ” выдадут более подходящие документы, чем “легковые автомобили”.

Не пишите большими буквами

Начиная слово с большой буквы, вы не найдете слов, написанных с маленькой буквы, если это слово не первое в предложении. Поэтому не набирайте обычные слова с Большой Буквы, даже если с них начинается ваш вопрос Яндексу. Заглавные буквы в запросе рекомендуется использовать только в именах собственных. Например, “группа Черный кофе”, “телепередача Здоровье”.

Ищите похожие документы

Если один из найденных документов ближе к искомой теме, чем остальные, нажмите на ссылку “найти похожие документы”. Ссылка расположена под краткими описаниями найденных документов. Яндекс проанализирует страницу и найдет документы, похожие на тот, что вы указали. Но если эта страница была стерта с сервера, а Яндекс еще не успел удалить ее из базы, то вы получите сообщение “Запрошенный документ не найден”.

Используйте знаки “+” и “–”

Чтобы исключить документы, где встречается определенное слово, поставьте перед ним знак минус. И наоборот, чтобы определенное слово обязательно присутствовало в документе, поставьте перед ним плюс. Обратите внимание, что между словом и знаком плюс-минус не должно быть пробела. Например, если вам нужно описание Парижа, а не предложения многочисленных турагентств, имеет смысл задать такой запрос “путеводитель по Парижу -агентство -тур”. Плюс стоит использовать в том случае, когда нужно найти так называемые “стоп-слова” (наиболее частотные слова русского языка, в основном это местоимения, предлоги, частицы). Чтобы найти цитату из Гамлета, надо задать запрос “+быть или +не быть”.

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

Использованные источники информации

1. Помощь пользователям системы Яндекс (www.yandex.ru).

2. Кирсанов Д. Поиск. Отрывок из книги “Понятный Интернет” (http://www.symbol.ru/dk/www.htm).

3. Что такое поисковая машина, или Как работает поисковик (http://site-stroy.com.ua/ru/article/search/28/85).

Продолжение статьи читайте в следующем номере. Во второй части будет подробно рассмотрен язык запросов к поисковым системам.

TopList