Разные поисковые системы. Как написать поисковую систему

Вы хоть раз задумывались, как устроены такие поисковые системы как Яндекс или Google? Если бы перед Вами стояла задача написать поисковую систему с нуля, с чего бы Вы начали? Наверняка многие из Вас уже писали простые контентные сайты с внутренней системой поиска для них, А поиск реализовывали очень просто – командой LIKE синтаксиса SQL. Думаете, Яндекс тоже так работает? 🙂

Рассказать про все механизмы, реализованные в современных поисковых системах – это явно задача не для одного поста (да и рассказать-то я много не смогу 🙂), поэтому здесь я расскажу про самую значимую и неизвестную для многих часть поисковиков – индекс. Но не будем торопиться.

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

Интерфейс пользователя знаком всем – google.com, ya.ru. Обычно это просто строка поиска. Поисковый агент – программа, которая ползает по сайтам, собирая тексты страниц и url с них. Поисковый агент сохраняет собранную информацию в индексе.
Ну, а самая важная часть – это индекс, или поисковая база данных.

В индексе хранится все собранная поисковыми агентами информация – страницы Интернета.

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

Как именно данные сохраняются в индекс? Какую структуру имеют таблицы индекса? Это как раз является одной и ключевых деталей поисковой системы.

Если рассматривать поисковую систему очень абстрактно, то индекс можно разделить на три таблицы: словарь, документы и связи.

Чтобы было понятней, представьте три таблицы:

words (словарь) c полями:
id, name

documents (документы) с полями:
id, document

и relations (связи) с полями:
word_id, doc_id

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

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

После того, как Вы заходите на сайт google.com и вбиваете в поиск “php”, запускается очень сложный механизм, цель которого – показать Вам список связанных с запросом документов, в порядке убывания релевантности.

Как это реализуется? Тут все очень сложно. Во-первых, поисковая система должна выбрать соответствующие документы – те документы, в которых встречаются указанные слова. С помощью таблиц указанных выше уже можно в целом представить себе как это делается. А вот с ранжированием (упорядочиванием) уже начинаются проблемы, которые каждая поисковая система решает по-своему.

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

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

К небольшим поисковым системам можно отнести такие проекты как sphinx и lucene.

Вот и все. Такой вот небольшой и полезный экскурс в поисковые системы. 🙂

Дополнительная информация.

Многие новички в сфере «вебмастеринга» (назовём это так) в какой-то момент обретают «гениальную» идею, «а не замутить мне свой поисковик?! продавать рекламу, рубить бабло!». Признаюсь, было и у меня такое… 3 раза.

Поисковик по рунету — убийца Яндекса

Насобирал ссылок по тематике, стал изучать, перелопатил всё, что обнаружил по Апорту и Яндексу. Скачал несколько бесплатных движков с пауками, но «знаний» не хватило, даже чтоб их просто поставить. Голь на выдумки хитра: взял скрипт каталога (без бд, на txt файлах), с поиском по базе сайтов и стал наполнять его сайтами: вначале сам, потом нанял модератора. И что бы вы думали? Разумеется, затея провалилась, но появились идеи, которые вылились поисковик по книгам, о нём — далее.

Поисковик по книгам

Покопавшись в немногичисленных рунета (2004-2007 года примерно), взял две книжных: Колибри и Болеро, причина выбора проста — в обоих случаях из партнёрского интерфейса можно было выкачать базы данных с товарами этих магазинов. Информации в базах было мало: название книги, автор, адрес на сайте магазина. Но этого хватило чтобы создать каталог+поисковик. Причём по книгам выдавались и аннотации (парсились в режиме реального времени с сайтов магазинов, да, о кэшировании я тогда и не подозревал, равно как и не пользовался автоматическим редиректом…).

Книжный поисковик успехом не пользовался, но каталог приносил тоны нефти трафика с Яндекса, соответственно продажи книг. Большинство покупок были с доставкой почтой, наложенным платежом, поэтому поступлений на счёт ждать приходилось месяцами… Почта России.

Убийца Гугла

Основное направление моей работы было в «буржунете», в частности работал с PPC, преимущественно с Юмаксом, а посему в качестве «движка» для следующего поисковика выбрал их фид. Вооружившись php (а точнее переделав парсеры книжных каталогов), научился добавлять к выдаче дополнительную информацию соответственно запросу пользователя, картинки и т.д (прям как сейчас 🙂).

И тут случилось прекрасное. Поисковики: Мсн (ныне — Бинг) и Гугл начали индексировать результаты выдачи «моего поисковика» и радовать трафиком, который в свою очередь щедро оплачивался Юмаксом.

И пока коллеги клепали доры, я клепал такие поисковики: разные дизы, разные источники для дополнительной информации. Зачем делать доры и перенаправлять трафик на фид, рискуя попасть в бан из-за редиректа, когда можно делать, например, тематические мини-сайты, без редиректа? Белые дорвеи, кажется так сейчас их принято назвать. Идилия длилась не долго — меньше года. Смены алгоритмов в начале на мсн, потом и у Гугла похоронили подобные решения (точнее, сделали их куда менее эффективными).

Где-то во время краха «системы» в мсн, я «с горя» взял один из забанненых доменов — сайт и перенёс на него блог, который ранее вёл то на каком-то форуме, то в рамках сайта рекламного агентства.

3 раза! 3 раза наступал на похожие грабли: некоторые люди не учатся даже на собственных ошибках:)

Подпишитесь на нашу рассылку и получайте то, что не вошло в блог , анонсы и тематические подборки + несколько руководств (сбор подписчиков и продажа информации).

Инструкция

Разделите свой поисковик на три части. Первая часть – это интерфейс будущего веб-поисковика, который пишется на языке PHP. Вторая часть – это индекс (база данных My SQL), в которой хранится вся информация о страницах. Третья часть – это поисковой робот, который будет индексировать веб-страницы и заносить их данные в индекс, его делают на языке Delphi.

Начнём создавать интерфейс. Создайте файл index.php. Для этого разделите страницу на две части, используя таблицы. Первая часть – поисковая форма, вторая – результаты поиска. В верхней части создайте форму, которая будет посылать информацию файлу index.php методом get. На ней будут расположены три элемента – текстовое поле и ещё две кнопки. Одна кнопка нужна для отправки запроса , вторая – для очистки поля (эта кнопка не обязательна).

Дайте текстовому полю имя «search», первой кнопке (той, которая отправляет запрос) имя «Искать». Имя самой формы оставьте, как есть – «form1».

Подключите конфигурационный файл, чтобы подключиться к базе данных.

include "config.php";

Проверьте, была ли нажата кнопка «Искать».

if (isset($_GET["button"])) {код, выполняемый в том случае, если кнопка «Искать» нажата} else {код, выполняемый в том случае, если кнопка «Искать» не нажата}

Если кнопка нажата, то тогда проверьте наличие поискового запроса.

if (isset($_GET["search"])){$search=$_GET["search"];}

Если поисковой запрос есть, то присвойте переменной $search текст поискового запроса.

if ($search!="" && strlen($search)>2){ код поиска по базе данных } else {echo "Задан пустой поисковый запрос или строка поиска содержит менее 3 символов.";}

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

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

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

Вам понадобится

  • - браузер;
  • - подключение к интернету;
  • - права на редактирование содержимого или шаблонов страниц сайта.

Инструкция

Начните создание системы пользовательского поиска на основе технологий Google. Войдите в панель сервиса управления системами поиска. В браузере откройте страницу с адресом http://www.google.ru/cse/ . Используйте для работы с системой свой аккаунт Google. Кликните по кнопке "Создать систему польз. поиска".Если вы не авторизованы в текущий момент, то кликните по ссылке «Войти». Введите данные от аккаунта в форму и нажмите кнопку «Войти». Если у вас не имеется общего аккаунта Google, создайте его, кликнув по ссылке «Создайте аккаунт прямо сейчас » и выполнив предложенные действия.

Введите основные параметры создаваемой системы пользовательского поиска. Заполните поля «Имя» и «Описание», выберите язык интерфейса в выпадающем списке «Язык». В текстовом поле «Сайты для поиска» введите список ресурсов, информация с которых будет представлена в результатах поиска при помощи создаваемой системы. Нажмите кнопку «Далее».

Получите javascript-код для установки поисковой системы на сайт. Выделите все содержимое в текстовом поле, находящемся на текущей странице. Скопируйте выделенное содержимое в буфер обмена и сохраните в каком либо временном файле.

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

Обратите внимание

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

Полезный совет

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

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



Понравилась статья? Поделиться с друзьями: