return_links(); ?>

 

Обзор алгоритмов, принципы работы поисковых поисковых сиситем
Принцип работы поисковых систем
Задача любой поисковой системы – доставлять людям ту информацию, которую они ищут. Научить людей делать “правильные” запросы, т.е. запросы, соответствующие принципам работы поисковых систем невозможно. Поэтому разработчики создают такие алгоритмы и принципы работы поисковых систем, которые бы позволяли находить пользователям именно ту информацию, которую они ищут. Это означает, поисковая система должна “думать” также как думает пользователь при поиске информации.

Поисковые системы в большинстве своем работает по принципу предварительного индексирования.
Что это?

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

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

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

Таким образом, два главных процесса, выполняемых поисковой системой – это индексирование сайтов, страниц и поиск. В общем, то процесс индексирования для поисковиков проблем не вызывает. Проблемой является обработка миллиона запросов в сутки. Это связано с большими объемами информации, которая подвергается обработке больших компьютерных комплексов. Главный фактор, определяющий количество участвующих в поиске серверов, - поисковая нагрузка. Это объясняет некоторые странности возникающие при поиске информации.

Индексирование

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

Технически модуль скачивания бывает либо мультимедийным (Altavista Merkator), либо используется асинхронный ввод-вывод (GoogleBot). Также разработчикам постоянно приходится решать задачу многопоточного DNS-сервера.

В мультитредовой схеме скачивающие треды называются червями (worms), а их менеджер – погоняльщиком червей (wormboy).

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



Для скачивания страниц роботы используют протоколы HTTP. Работает он следующим образом.

Робот на сервер передает запрос “get/path/document” и другие полезные строки, относящиеся в HTTP запросу. В ответ робот получает текстовый поток, содержащий служебную информацию и непосредственно сам документ.

Целью скачивания является уменьшение сетевого трафика при максимальной полноте.

Абсолютно все поисковые роботы подчиняются файлу robots.txt, где web мастер может ограничить индексацию страниц роботом.

Также у роботов есть и свои фильтры.

Например, некоторые роботы опасаются индексировать динамические страницы. Хотя сейчас web мастеры без проблем обходят эти места. Да и таких роботов остается все меньше.

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

Отметим, что при этом поисковые системы не фильтруют информацию. Т.е. они лишь заняты проблемой оценки релевантности страниц. А фильтр информации может предоставляться в виде сервисов, в которых пользователи отмечают “нежелательные” ресурсы.

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

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

Есть отдельный модуль определения кодировки и языка документа.

После того как страница было скачена, она обрабатывается html-парсером. Он оставляет лишь ту информацию от документа, которая действительно важна для поиска: текст, шрифты, ссылки и т.д. Что значат все эти модули для конкретного документа? Что делает поисковая система с документом после скачивания?

Хотя сейчас роботы индексируют почти все. И javascript и флэш-технологии. Но, тем не менее не стоит забывать про некоторую ограниченность роботов.

Помещение в индекс

Затем слова разбиваются по морфологическим и языковым принципам. Хотя не все поисковики имеют в своем “арсенале” морфологическую обработку. Затем страница попадает в индекс. Обновление индекса в поисковиках происходит с определенной периодичностью (в среднем от двух недель до месяца). Т.е. новые страницы накапливаются и периодически отправляются в общий индексный указатель.

Поиск

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

Затем web сервер отправляет ваш запрос на поисковый сервер, задача которого выбрать релевантные страницы и ранжировать их по списку. Итог – вывод результатов поиска в вашем браузере.
 
return_links(); ?> return_links(5); ?>