© Вячеслав Тихонов
Metaping & Topping
В данной статье на примере метапоисковой системы MetaPing рассматривается архитектура метапоисковых систем и основные принципы их работы и построения.
Ни для кого не секрет, что всемирная сеть Интернет, содержащая постоянно растущий огромный объем динамически изменяющейся информации, развивается небывало бурными темпами. Для того, чтобы как-то упорядочить этот непрерывный поток данных, а самое главное, дать возможность пользователям Сети находить нужную информацию, были созданы специальные поисковые системы. Каждая такая система имеет индекс, несущий служебную информацию о содержимом проиндексированных документов, где каждому слову текста соответствует частота его употребления и координаты данного слова в тексте.
Каждая поисковая система имеет только свое собственное, ограниченное ее ресурсами, множество документов, которые доступны для поиска. Ни одна из подобных систем не сможет охватить всех ресурсов Интернет, поэтому в любой момент может возникнуть ситуация, когда информационные потребности пользователя не смогут быть удовлетворены. Как правило, в этом случае пользователь переходит на другую поисковую систему и пытается искать то, что ему нужно, там.
Для решения данной проблемы и расширения возможности поиска, были созданы системы, названные метапоисковыми. Они не имеют собственных поисковых баз данных, не содержат никаких индексов и при поиске используют ресурсы множества поисковых систем. За счет этого полнота поиска в таких системах максимальна и вероятность нахождения нужной информации очень высока.
При проектировании метапоисковой системы нужно решить ряд проблем.
Прежде всего, из полученного от поисковых систем множества документов необходимо выделить наиболее релевантные, то есть соответствующие запросу пользователя. Как правило, создатели метапоисковых систем не совсем оправданно надеются, что поисковые системы, которые они используют, возвращают релевантные результаты поиска, и слишком полагаются на позицию, на которой в данной поисковой системе находится документ.
Этот стандартный подход представлен на рис. 1. В таких системах анализ полученных описаний документов не производится, что может поставить нерелевантные документы, идущие первыми в одной поисковой системе, выше релевантных в другой, чем существенно понизить качество самого поиска. Этот принцип оказался хорошим при создании автором анализатора позиции сайта в поисковых системах, но в целом для систем метапоиска оказался неудовлетворительным.
Рис.1 Стандартная метапоисковая система
При разработке следующего поколения метапоисковых систем были учтены недостатки, присущие стандартным метапоисковым системам. Были созданы системы с возможностью выбора тех поисковых машин, в которых, по мнению пользователя, он с большей вероятностью может найти то, что ему нужно (рис. 2)
Рис. 2. Следующее поколение метапоисковых систем
Кроме этого, такой подход позволяет уменьшить используемые вычислительные ресурсы метапоискового сервера, не перегружая его слишком большим объемом ненужной информации и серьезно сэкономить трафик. Здесь нужно отметить, что в любой системе метапоиска наиболее узким местом в основном является пропускная способность канала передачи данных, так как обработка страниц с результатами поиска, полученными от нескольких десятков поисковых серверов не является слишком трудоемкой операцией, потому что затраты времени на обработку информации на порядки меньше времени прихода страниц, запрошенных у поисковых серверов.
Как пример систем, имеющих подобную организацию, можно назвать Profusion, Ixquick, SavvySearch, MetaPing.
Ниже будет описан принцип работы метапоисковой системы MetaPing, разработанной автором этой статьи, однако общие принципы будут верны и для остальных систем этого класса (см. рис. 2).
Начнем со стартовой страницы данной метапоисковой системы. Обычно интерфейс такой системы предельно упрощен и сразу же позволяет понять, что, где и как здесь можно искать. В нашем случае (MetaPing) поиск возможен по трем областям поиска: по России, по Украине и по всему миру, при этом имеется возможность искать все, отметив поиск по интернету, или сузить область поиска и искать конкретно объявления, новости, файлы и рефераты (рис. 3).
Рис.3 Стартовая страница MetaPing
Пользователь выбирает, скажем, поиск по России, и вводит, например, такой запрос: "лучшие поисковые системы" (рис. 4).
Рис. 4 Страница MetaPing с результатами поиска
После этого запрос ретранслируется указанным российским поисковым системам (в нашем случае это Рамблер, Апорт, Lycos и Google). Следует отметить, что Google, хотя и не является российской поисковой системой, в настоящее время успешно с ними конкурирует как по полноте баз, так и по качеству поиска, и именно поэтому он здесь оказался. Кстати, внимательный читатель наверняка отметил отсутствие самой крупной российской поисковой системы Яндекс. На момент запуска MetaPing Яндекс тоже здесь тоже присутствовал, но после известного скандала его пришлось убрать.
Для передачи запроса к поисковой системе используется специальный метапоисковый агент, который отвечает не только за процесс ретрансляции запроса и приема страниц, но и за то, чтобы запрос был передан в правильной кодировке, принятой в каждой из выбранных поисковых систем, иначе будет получен совершено другой набор описаний документов или не будет получен вовсе, что негативно скажется на качестве поиска.
После обработки полученного запроса каждая система возвращает метапоисковому агенту множество описаний и ссылок на документы, которые считает релевантными данному запросу.
Как среди этого множества выбрать именно то, что нужно пользователю?
В начале этой статьи уже упоминался стандартный подход, который используется большинством систем метапоиска и состоит в том, чтобы просто расположить полученные ссылки по порядку их следования в результатах поиска каждой из поисковых систем. При этом, если в разных поисковых системах был найден один и тот же сайт, то ценность его для пользователя, естественно, существенно повышается.
Подход, безусловно, правильный, но что делать в том случае, если одна система, к примеру, индексирует динамически генерирующиеся страницы, а другая нет? У них различные множества проиндексированных документов, различная полнота баз, следовательно, запрошенная пользователем информация может быть найдена в одной системе и может быть не найдена в другой. В этом случае пользователь может получить несколько действительно релевантных ссылок от одной системы, которые будут перемешаны с абсолютно нерелевантными из другой (например, в случае, когда фраза целиком не найдена, поиск идет по одному из ключевых слов запроса). В результате, пользователю вручную приходится отбирать релевантные ссылки и велика вероятность того, что покопавшись в подобном "винегрете", он попросту уйдет и уже никогда не вернется.
Есть ли какой-либо способ решить эту проблему? Конечно есть. Нужно с полученным от поисковых систем множеством описаний документов сделать то же, что делают они сами с этими документами, то есть определить частоты ключевых слов в каждом заголовке и описании и попытаться самостоятельно определить рейтинг каждого из них.
Именно по такому принципу построена метапоисковая система MetaPing, где реализован смешанный алгоритм обработки информации. Автором были разработаны специальные программы для анализа полученных данных, благодаря которым на первом этапе происходит ранжирование множества описаний полученных документов, на втором ранг дополнительно корректируется согласно месту, на котором находится документ, и общему количеству документов, найденных по запросу (это позволяет оценить полноту поисковых баз конкретной системы).
Подобная обработка позволяет не только убирать документы, в описании которых вообще нет ключевых слов как потенциально нерелевантные запросу, но и находить строгое соответствие в том случае, если все ключевые слова встречаются в описании документа полностью, что неизмеримо повышает качество и точность поиска.
Данная статья, естественно, не претендует на полноту изложения, в ней рассмотрены лишь основные принципы построения метапоисковых систем. Поэтому если после ее прочтения у Вас возникли какие-либо вопросы, Вы можете задать их по e-mail: tikhonov@ukr.net.