Шрифт:
Индекс— это та часть поисковой машины, в которой осуществляется поиск информации. Индекс содержит все данные, которые были переданы ему роботами, поэтому размер индекса может достигать сотен гигабайт. Практически, в индексе находятся копии всех посещенных роботами страниц. В случае если робот обнаружил изменение на уже проиндексированной им странице, он передает в Индекс обновленную информацию. Она должна замещать имеющуюся, но в ряде случаев в Индексе появляется не только новая, но остается и старая страница.
Поисковый механизм— это тот самый интерфейс, с помощью которого посетитель взаимодействует с Индексом. Через интерфейс пользователи вводят свои запросы и получают ответы, а владельцы сайтов регистрируют их (и эта регистрация — еще один способ донести до робота адрес своего сайта). При обработке запроса поисковый механизм выполняет отбор соответствующих ему страниц и документов среди многих миллионов проиндексированных ресурсов и выстраивает их в порядке важности или соответствия запросу.
Названные выше компоненты не обязательно входят в состав поисковой машины так, как они здесь описаны. У разных поисковиков реализация может отличаться друг от друга. К примеру, связка Spider+Crawler+Индексатор может быть выполнена в виде единой программы, которая скачивает известные веб-страницы, анализирует их и ищет по ссылкам новые ресурсы.
1.1.2. Характеристики поисковых машин
В статье, посвященной поисковой машине Rambler doc/architecture.shtml), называются основные характеристики, которые могут быть применены к любым поисковикам:
полнота;
точность;
актуальность;
скорость;
наглядность.
Полнотапоиска характеризуется отношением количества найденных по запросу документов к общему количеству документов в Интернете, соответствующих данному запросу. Если по запросу "кристаллическая решетка" будет найдено 150 документов, а общее количество документов в Интернете, соответствующее этому запросу, составляет 1000, то полнота поиска составит 0,15. (Эта величина приблизительная, поскольку неизвестно точно, сколько же на самом деле существует в Интернете страниц, отвечающих условию поиска.) Чем более полно проанализированы и занесены в Индекс документы, тем выше будет показатель полноты поиска.
Точностьпоиска определяется как степень соответствия найденных документов запросу пользователя. Допустим, мы хотим найти документы, в которых встречается выражение "сын знахаря". В результатах поиска мы увидим документы, в которых встречается точно такое выражение. Но присутствуют и документы, содержащие искомые слова, но не выражения, например: "родители привозят сынав небольшой городок на Адриатическом побережье, к местному знахарю". И если всего найдено 200 документов, из которых только в 80 встречается именно искомое словосочетание, то точность поиска будет оценена как 80/200 (0,4). Чем точнее поиск, тем выше вероятность, что пользователь найдет нужные документы, тем меньше будет избыточной, лишней информации.
Для повышения точности результата в различных поисковых системах применяются различные способы. Каждый поисковик использует свои решения, в целом предназначенные для выполнения близких по сути задач. К примеру, вот что по этому поводу сказано на сайте Рамблера:
Повышение точности в поисковой машине Рамблер достигается за счет использования различных технологий на всех этапах обработки и поиска информации. Одним из наиболее интересных процессов является распознавание грамматических омонимов. Омонимы— это слова, которые имеют одинаковое написание, но различный смысл. Различают лексические и грамматические омонимы. Лексические омонимы относятся к одной части речи, как, например, существительное "бор": хвойный лес, стальное сверло и химический элемент. Грамматические омонимы относятся к разным частям речи, поэтому по написанию у них обычно совпадают только отдельные формы. Примерами грамматических омонимов могут служить слова "печь" (существительное русская печьи глагол печьпирожки) и "рядовой" (прилагательное рядовойсотрудник и существительное рядовойИванов).
Омонимы не только увеличивают размер индексной базы (так как для каждого такого слова приходится хранить все его возможные значения), но и отрицательно сказываются на точности поиска. Если пользователь ищет слово "данные", ему неинтересно получить в найденном все документы, которые содержат слово "дать". Для того чтобы результаты поиска были точнее, модуль синтаксического анализа проводит разбор окружения слов-омонимов с целью установления их наиболее вероятных значений. Например, если рядом со словом "печь" стоит существительное ("пирожки", "картошка"), то с высокой вероятностью "печь" в данном контексте является глаголом. На сегодняшний день анализатор способен распознавать значения только грамматических омонимов.
Синтаксический анализ позволяет также с определенной вероятностью распознавать некоторые имена собственные. Например, если в тексте несколько слов подряд написано с большой буквы, они чаще всего представляют собой имя собственное (Петр Петрович, Московский Государственный Университет). Данные о таких конструкциях учитываются при индексации и обработке запроса.
Еще один способ повышения точности поиска — это выделение устойчивых обозначений и поиск их как отдельных лексических единиц. На сегодняшний день в Рамблере реализована система распознавания таких конструкций, как, например C++, б/у, п/п-к. Если по запросу С++ поднимать все тексты, в которых присутствуют латинская буква С, а также знак +, то получится огромное количество документов, далеко не все из которых соответствуют запросу; кроме того, это большая работа, значительно увеличивающая время поиска.
Источник: "Принципы работы поисковой машины Рамблер" .
А вот что на эту же тему пару лет назад сказал И. Сегалович, директор Яндекса по технологиям и разработке:
Алгоритм поиска учитывает социальную структуру Интернета. Он умеет отличать мнение людей от технической, вспомогательной и рекламной информации, то есть лучше распознавать, какой ресурс является авторитетным в своей области. Также введена дополнительная очистка результатов поиска от дубликатов. Теперь пользователь избавлен от повторения в списке найденного почти одинаковой информации. Поиск в Интернете — это серьезная наука, поэтому для повышения качества сервиса в Яндексе проводятся регулярные исследования. В прошлом году мы организовали отдел асессоров— пользователей, которые систематически по заданной методике оценивают релевантность результатов. Обратная связь от асессоров дает нам возможность настраивать параметры алгоритма ранжирования и увеличивать точность поиска. Стало удобнее работать с региональной информацией. Теперь Яндекс автоматически определяет, в каком городе находится компьютер, с которого поступил запрос, и, если уточнение по региону имеет смысл, предлагает повторить поиск, ограничив его сайтами данного региона. Поиск поддерживает шесть языков — к русскому и английскому добавились украинский, белорусский, французский и немецкий. Язык документов и сайтов определяется автоматически, а ограничить область поиска нужным языком можно в настройках или расширенном поиске. Расширенный поиск стал проще и функциональней, заданные с его помощью ограничения теперь видны на странице найденных результатов. Благодаря "умной подсказке" пользователи расширенного поиска смогут увидеть сформированный запрос, как если бы он был задан на русском языке.
Какова психология того, кто ищет информацию? Считается, что наиболее подходящие (релевантные) документы должны быть на первой-второй страницах результатов поиска. Если количество полученных результатов больше, человек вряд ли будет просматривать остальные страницы. И даже если в числе найденных есть документ, полностью отвечающий заданным условиям, но находится он на странице из второго десятка, ищущий этот документ не увидит — он просто не дойдет до этой страницы. Поэтому громадное значение приобретает и ранжированиедокументов в результатах поиска по их релевантности запросу.