Когда речь заходит о «Яндексе», первое, что приходит в голову — поисковая система, индекс цитирования, тематический индекс. Потом начинается вспоминание других сервисов, которые предоставляются этим порталом — новости и их импорт, справки и почта, "Яндекс.Деньги" и «Спамооборона», хостинг и развлечения, словари и энциклопедии. Покопавшись в памяти вспомнишь, что можно расширить возможности браузера, установив "Яндекс.Бар". Немного напрягшись вдруг удивляешься — совсем забыл о возможности установить форму поиска от «Яндекса» на своем сайте. И совсем редко кто может сказать, что «Яндекс» предлагает бесплатно установить на вашем сайте полноценную возможность поиска «от Яндекса».
Такая возможность реализована в виде продукта "Яндекс.Сервер" и существует в трех редакциях — Standard, Professional и Enterprise. Несложно догадаться, что отличаются они своими возможностями. Но даже наиболее простой вариант реализации — Standard — обеспечивает организацию многих поисковых возможностей «Яндекса». Эта редакция не содержит лицензионных ограничений на число индексируемых документов, их размер или суммарный размер индекса. Позволяет индексировать документы как через HTTP-соединение, так и чтением локальной файловой системы. Позволяет независимо настраивать параметры индексирования для разных групп документов. Поддерживает все возможности языка запросов, ранжирования результатов поиска и подсветки найденных слов. Но вывод результатов делает только на встроенную форму дизайна.
Программ "Яндекс.Сервер" существует в редакциях для различных платформДля установки программы под Windows (есть релизы и под другие системы — .nix, FreeBSD, Sun Solaris, BSDI) достаточно распаковать дистрибутив в выбранный вами раздел, отредактировать конфигурационный файл (подробное описание действий приведено в документации к системе), установить программу в качестве системного сервиса. После выполнения этих действий поиск готов к работе. А для того, чтобы использовать его возможности на своем сайте, достаточно на страницы добавить небольшую поисковую форму, например, такую:
<!-- форма поиска --> <form name="search" method="get" action="/redir.php?url=www.mysite.ru%3A17000%2F"> <b>Поиск:</b><br> <input size="15" name="text" value="" maxlength="200"> <input type="submit" value=" Найти "> </form>
Из каких модулей состоит и как работает поисковый сервер? Продукт можно разделить на две основных и две вспомогательных подсистемы. Основные — подсистема индексации и подсистема поиска. Индексатор обеспечивает анализ документов и сохранение информации о них в индексных файлах. Индексируемые документы (страницы сайта, файлы) можно разделить на коллекции. По сути, это наборы документов, разделов сайта, связанные определенными критериями, которые устанавливают их владельцы. Для каждой коллекции в конфигурационном файле имеется собственная секция настройки, а при индексировании запускается отдельная подсистема, использующая определенные в конфигураторе правила индексации. (Имена коллекций могут быть произвольными, за исключением трех предопределенных слов — admin, images, hl.) Вспомогательные подсистемы — это языковой модуль, предназначенный для преобразования слов к их словарным формам с учетом морфологии языка и шаблоны выходных страниц.
Поисковые и индесирующие сервисы взаимонезависимыСервисы индексации и поиска для каждой коллекции могут запускаться и останавливаться независимо друг от друга. Индексатор нужно запускать, как правило, при внесении изменений в состав документов, страниц сайта или изменения в базе данных. А вот поисковый сервер после запуска находится в постоянном ожидании запросов на поиск. А сам поиск выполняется также, как и на поисковом сервере «Яндекс», то есть учитываются словоформы, постоянные словосочетания, неологизмы, поиск в найденном и поиск похожих документов, поддерживается метапоиск и ранжирование результатов, поиск в рамках предложения и документа, поиск имен собственных и поиск с расстоянием. Индексирование выполняется без остановки поискового сервера, имеется возможность создания компактных индексов, использование стоп-слов, распознавание зон в html- и xml-документах, распознавание кодировок и использование различных фильтров при индексации.
Для каждой коллекции наборы индексных файлов размещаются в отдельных директориях, описываемых в конфигурации коллекций. Состав набора индексных файлов также может быть различным. Он зависит от заданных настроек. При индексировании создаются базовые индексы, в которых сохраняется информация о каждом слове документа (за исключением стоп-слов) — идентификатор документа, в котором слово найдено, номер предложения и номер слова в предложении. В этих же файлах сохраняется информация о зонах и атрибутах документов. В других индексных файлах сохраняется неотформатированный текст документов, еще одна пара индексных файлов может сохранять информацию о группировочных атрибутах. Их наличие позволяет группировать и сортировать найденные документы по значению атрибута.
Каждая коллекция документов может содержать несколько областей индексирования. Область — это множество документов, индексируемых с единым набором параметров. Доступ к областям может осуществляться по протоколу HTTP (доступ к веб-серверам), по протоколам операционной системы для доступа к локальным разделам и по протоколам доступа к внешним источникам данных, например, к базам данных с использованием протоколов OLEDB или ODBC (для Windows). Модули доступа к внешним данным могут быть реализованы и сторонними разработчиками, поскольку описание протокола входит в состав документации.
Каждый документ должет иметь свой собственный идентификатор — URLДля того чтобы при использовании поиска можно было выйти на необходимый документ, он должен иметь уникальный URL. Для каждой области индексирования могут быть заданы: режим получения URL документа, режим получения содержимого документа, включая конфигурацию HTTP-заголовков и прокси-серверов для документов, получаемых по HTTP-протоколу, режим обновления индекса, кодировка символов, используемая в документах, набор атрибутов, значения которых можно использовать, например, в качестве критериев поиска. В общем случае, когда используются различные типы доступа, процесс индексирования происходит в таком порядке. Сначала обновляется индекс документов, которые были проиндексированы в предыдущем сеансе. Затем — новые документы из внешнего источника данных. Следом идут новые документы, чьи URL получены за счет чтения файловых разделов и, наконец, новые документы, чьи URL получены путем распознавания гипертекстовых ссылок в документах. Но за счет настроек конфигурационного файла последовательность обработки документов может быть изменена. Например, можно отказаться от использования ранее сформированных индексных файлов и при новом индексировании формировать их заново.
Но бывает, что не все документы или не все их части нужно индексировать. Такие ситуации также реализованы в индексаторе. Во-первых, можно доработать HTML-документ, добавив в него теги <NOINDEX> и </NOINDEX>. В этом случае из процесса индексирования будет исключен весь текст, находящийся между ними. Во-вторых, индексатор поддерживает общепринятый стандарт исключений для поисковых роботов. Поэтому для исключения отдельных разделов, документов, можно использовать файл robots.txt, записав в него правила управления процессом индексирования, с указанием в качестве поискового агента робота MyYandexServer.
Еще одно свойство поисковой системы — возможность индексирования файлов произвольного формата. Это обеспечивается с помощью отдельных модулей — парсеров. Основная задача парсеров — выделение из документов нужного для индексирования текста с учетом привязки к определенным зонам и имеющего определенные свойства. Для каждого типа файлов применяется свой модуль. В наиболее полную версию поисковика включены парсеры для документов в форматах XML, RTF, PDF и DOC, помимо входящий в стандартную поставку парсеров для форматов text/html и text/plain. Используя спецификацию, независимые разработчики могут разработать и иные парсеры, необходимые для используемых ими форматов данных.
Нет ничего проще, чем индексирование данных в СУБД с использование "Яндекс.Сервера"Если веб-сервер, на который устанавливается поисковая система, работает с информацией, размещаемой в базе данных (это может быть каталог изделий, магазин, справочник), то для поиска по этим данным удобно использовать возможность индексирования внешних источников. Индексация информации из базы данных организуется при помощи двух SQL-запросов, в результате выполнения которых индексатор получает необходимую информацию и обрабатывает ее обычным образом. В качестве ссылки на исходный документ (запись из базы данных) в индексный файл записывается искусственно создаваемый URL. Непосредственно при поиске сервер производит стандартный поиск по ключевому слову и подготавливает обычную страницу результатов. Она в качестве ссылок на найденные документы содержит URL'ы, сформированные по определенным правилам, которые должны уметь правильно интерпретировать процедуры, отвечающие за извлечение данных из SQL-базы (реализуется с помощью скриптов, написанных администратором сервера, либо настройками поискового сервера).
И, наконец, самое интересное — вывод результатов поиска. В стандартной версии форма выдачи результатов включена в состав поставки продукта и не может быть изменена. Эта форма разработана дизайнерами «Яндекс» и вполне соответствует большинству пожеланий пользователей. Результаты поиска могут быть отсортированы по дате последнего изменения документа, по значению релевантности, определяемой поисковой системой, по значениям группировочного атрибута. (Сортировка по релевантности может быть только убывающей. В остальных случаях она может быть как убывающей, так и возрастающей.)
Но форму вывода результатов можно сделать и собственную, только версия поисковика должна быть выше, чем стандартная. В процессе выполнения поискового запроса поисковый сервер вызывает функции, которые могут быть написаны разработчиком страницы с результатами поиска. Если какая-либо из функций не предоставлена разработчиком поисковой страницы, то будет использована реализация по умолчанию, такая же, как во встроенном дизайне. При реализации поиска по зонам документа возможности реализации запросов отданы на откуп разработчикам форм запросов. При этом хорошим тоном будет вынесение различных поисковых опций в привычные для пользователя элементы интерфейса — чекбоксы, радио-кнопки, выпадающие списки. Взять те же зоны. Если вести поиск по гиперссылкам, то чем обучать всех возможных посетителей правилам поиска, было бы правильнее подготовить форму поиска, которая учитывала бы эти возможности.
Какая бы версия "Яндекс.Сервер" не использовалась на веб-ресурсе, можно сказать с большой определенностью — она снимет головную боль разработчиков в части создания собственной поисковой системы. Если уж поисковым сервисом «Яндекса» пользуются тысячи и тысячи человек, получая нужные результаты, то, безусловно, эти же решения на отдельном ресурсе дадут не меньшие возможности его посетителям.
Ссылки по теме
Статья получена: hostinfo.ru