ВебмастерМетрикаВиджетыРекламная сетьДиректПоиск для сайтаAPI
Войти

Руководство по установке и эксплуатации

В формате PDF

Основные концепции

Компоненты Яндекс.Сервера

Яндекс.Сервер представляет собой продукт, который позволяет организовать полнотекстовый поиск документов в корпоративной сети и на веб-сайтах.

Яндекс.Сервер состоит из следующих компонентов.

Поисковый модуль

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

Индексатор

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

Конфигурационный файл

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

Коллекция документов

Яндекс.Сервер работает с одной или несколькими коллекциями документов, в которых осуществляется поиск. Поиск в каждой коллекции документов осуществляется независимо. Каждая коллекция характеризуется уникальным именем (текстовой строкой). Если используется только одна коллекция документов, ее имя может быть пустым. Правила, по которым составлена коллекция документов, указываются в секции Collection конфигурационного файла.

Источник данных

Индексатор позволяет получать документы из следующих источников: файловая система, базы данных и веб. С этой целью получение содержимого документа осуществляется с помощью отдельных модулей, по одному модулю на каждый формат хранилища документов. Эти модули, понимающие структуру хранилища документов и предоставляющие документы индексатору, в дальнейшем называются источниками данных. Доступна спецификация интерфейса, которая позволяет независимым производителям разработать нужные источники данных. Настройка источника данных задается в подсекции DataSrc секции Collection конфигурационного файла.

Интерпретатор формата документа

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

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

Для дополнительной настройки парсера задается подсекция DocFormat секции Collection конфигурационного файла. Более подробная информация о парсерах и их настройках размещена в разделах Секция DocFormat, Парсеры (анализаторы содержимого документа), Конфигурация HTML-парсера и Конфигурация XML-парсера.

Языковой модуль

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

HTTP-сервер

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

Шаблоны страниц

Результаты поиска HTTP-сервер представляет в виде веб-страниц. Для их отображения используются шаблоны, указанные разработчиком сервиса. Методы создания шаблонов страниц описаны в разделе Формирование страниц с результатами поиска.

Важно

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

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

Основные возможности

Возможность Описание
Возможности языка запросов
Запрос на естественном языке. Возможность обращаться к поисковой машине на естественном (русском или английском) языке (например, играл ли Спартак с Динамо в марте?).
Поиск всех вариантов слов. Поиск идет с учетом морфологии языка, то есть может быть произведен по всем формам слова (например, если задан запрос идти, будут найдены документы со словами идет, шел, шла).
Поиск точной словоформы. По умолчанию поиск учитывает все формы заданного слова, однако существует возможность поиска по точной словоформе.
Корректная работа с неологизмами. Построение словарных гипотез для слов, не содержащихся в базовом словаре (неологизмы, сленг, имена собственные и т.д.).
Поиск устойчивых словосочетаний. Возможность находить документы, в которых заданные слова идут строго подряд.
Поиск с расстоянием. Возможность находить документы, в которых указанные слова находятся на заданном расстоянии друг от друга, или на расстоянии, не большем (не меньшем) данного. Расстояние может быть задано в словах или в предложениях.
Логические операторы. Поддержка логических операторов И, ИЛИ и НЕ, как в пределах документа, так и в пределах предложения.
Поиск по дате. Возможность искать документы с датой последнего изменения в заданном диапазоне.
Поиск в зонах. Возможность искать в определенных зонах документа, заданных при индексировании. В частности, можно искать в заголовках и аннотациях HTML-документов.
Поиск в атрибутах. Возможность учитывать при поиске как атрибуты целого документа, заданные при индексировании, так и атрибуты отдельных частей документа. Например, можно искать документы с заданными ключевыми словами, в заданном каталоге или содержащие заданную картинку.
Поиск в найденном. Возможность искать документы, удовлетворяющие новому запросу, среди документов, полученных в результате предыдущего запроса.
Поиск похожего документа. Возможность искать документы, похожие на заданный документ, с использованием специального эвристического алгоритма.
Многоязыковая поддержка. Возможность одновременного распознавания нескольких языков с учетом кодировок.
Возможности поискового сервера
Множественные коллекции. Поддержка нескольких независимых коллекций документов. Возможность поиска в одной или нескольких коллекциях.
Тематические разделы. Возможность логически структурировать информацию, организовывая поиск по тематическим разделам коллекции документов.
Метапоиск.

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

Кластеризация результатов. Возможность сгруппировать найденные документы в соответствии с их внешними атрибутами, такими как хост или категория каталога.
Ранжирование результатов. Возможность сортировки найденных документов по степени соответствия запросу, по дате или по одному из атрибутов, определенных при индексировании. Пользователь может повлиять на порядок сортировки, используя операторы веса и уточнения запроса.
Ссылочное ранжирование. Возможность учитывать внешние ссылки на документ при расчете его релевантности, обеспечивать поиск документа по текстам ссылок. Реализуется за счет построения ссылочного индекса.
Возможность перемещать найденные по запросу документы в первые и последние позиции выдачи. Для конкретного запроса можно определить один и более URL'ов и действие по их перемещению в выдаче: сделать первым/последним. Если для запроса определено несколько URL'ов, перемещаемых "наверх", то они займут первые позиции выдачи в соответствии со своей исходной релевантностью для данного запроса. Аналогично для URL'ов, перемещаемых "вниз".
Многостраничные результаты. Результаты поиска могут быть представлены в виде последовательности HTML-страниц, с возможностью произвольного перемещения между страницами и возможностью показывать произвольное число найденных документов на одной странице.
XML-представление. Результаты поиска могут быть представлены в виде XML-документа с определенной схемой.
Дизайн по умолчанию. Поисковый сервис может быть быстро запущен с использованием представления результатов поиска в дизайне по умолчанию.
Настройка дизайна. Возможность полностью настроить дизайн страницы с результатами поиска с использованием скриптов, написанных на Perl, C++ или XSLT. Возможность показывать или не показывать различные свойства документа.
Расширенный поиск. Возможность реализовать HTML-формы, представляющие "расширенный поиск" для пользователей, которые не хотят использовать язык запросов. Поля формы преобразуются в строку поискового запроса с помощью специальной процедуры.
Подсветка фрагментов. Возможность выделять слова, найденные в заголовках, на странице с результатами поиска. Возможность показывать отдельные предложения документа, содержащие найденные слова, на странице с результатами поиска.
Подсветка найденных слов. Возможность просмотреть найденный документ с выделенными поисковыми словами. Возможность пролистывать документ к следующему или предыдущему найденному слову. Статистика найденных слов для каждого документа.
Возможности индексатора
Независимые процессы индексации и поиска. Возможность проводить индексирование без остановки поискового сервиса.
Неограниченный размер. Не содержит ограничений на число индексируемых документов, их размер и суммарный размер индекса.
Быстрый компактный индекс.

Полнотекстовый индекс без учета точных словоформ занимает менее одной трети от объема проиндексированного текста и создается со скоростью около 40 Мб/мин на однопроцессорной машине класса Pentium IV, 512МБ ОЗУ.

Ссылочный индекс.

См. Ссылочное ранжирование.

Множественные типы документов. Поддержка форматов Plain text, HTML, XML, RTF, PDF, MP3, FLASH, MS Word, MS Excel, MS PowerPoint и дополнительных, определенных пользователем.
Зоны и атрибуты. "Умное" распознавание HTML и XML-форматов, возможность гибкой настройки, позволяющей индексировать произвольные зоны и атрибуты. Возможность соотнесения с документами дополнительных "внешних" атрибутов.
Поддержка HTTP-протокола. Содержимое индексируемых документов может быть получено в результате запроса к HTTP-серверу. Индексируемый документ может представлять собой результат работы серверного скрипта, принимающего параметры по методу GET. Автоматическая поддержка редиректов.
Настройка HTTP-соединения. Возможность настраивать время разрыва HTTP-соединения, используемый прокси-сервер, пароли доступа и посылаемые HTTP-заголовки для различных групп индексируемых документов.
Поддержка локальной сети. Содержимое индексируемых документов может быть получено из файловой системы локальной сети.
Поддержка произвольных источников данных. Содержимое индексируемых документов может быть получено обращением к произвольной базе данных, в частности MS SQL.
Использование гипертекстовых ссылок. Адреса документов для индексирования могут быть получены с помощью индексирующего "паука", начинающего индексирование с одного или нескольких заданных документов, и собирающего гипертекстовые ссылки для дальнейшего индексирования.
Распознавание кодировок. Возможность автоматически распознавать язык и кодировку индексируемого документа.
Гибкая настройка индексатора. Возможность переиндексировать только измененные документы. Возможность оставлять в индексе документы, временно недоступные во время индексирования. Независимая настройка многочисленных параметров индексирования для разных групп документов.
Гибкие фильтры. Возможность применения различных фильтров для того, чтобы индексировать или не индексировать документы, адреса которых удовлетворяют заданным шаблонам.

Требования к аппаратному и программному обеспечению

Таблица 2.  Поддерживаемые платформы

Операционная система Версии Разрядность
FreeBSD 6.3, 7.0 32/64
Linux glibc-2.3 и выше, kernel >= 2.5.66 32/64
Windows 2000/XP/2003 32/64

Для установки Яндекс.Сервера требуется следующее аппаратное и программное обеспечение:

  • 300 Мб свободного дискового пространства для установки программных модулей и конфигурационных файлов системы.
  • Свободное дисковое пространство для размещения создаваемых системой файлов индекса и временных файлов.
Примечание
При расчете объема свободного дискового пространства нужно учитывать следующее: общий объем индексных файлов может достигать от 30% до 90% суммарного объема проиндексированных документов. При переиндексации потребуется еще примерно столько же места. Кроме того, при обработке запросов поисковый сервер может создавать временные файлы, количество которых зависит от интенсивности запросов.

Структура и формат конфигурационных файлов

Конфигурационный файл определяет работу Я.Сервера. Для удобства работы конфигурационный файл можно разделить на несколько файлов.

Структура конфигурационного файла следующая:

  • секции и подсекции;
  • директивы – названия параметров (регистронезависимые);
  • аргументы – значение параметра (регистрозависимые).

Например:

<Секция1>
   Директива11: Аргумент11
   Директива12: Аргумент121, Аргумент122
   <Подсекция1>
       Директива111: Аргумент1111 
       Директива112: Аргумент1112
   </Подсекция1>
</Секция1>
<Секция2>
   Директива21  Аргумент211
   Директива22  Аргумент221 Аргумент222
</Секция2>
…
<СекцияN>
   ДирективаN1=АргументN11
   ДирективаN2=АргументN21, АргументN22, АргументN23, АргументN24, АргументN25

Секции и подсекции начинаются со строки <Имя секции> и заканчиваются строкой </Имя секции>. Внутри секций и подсекций располагаются группы директив и аргументов.

Между директивой и аргументом могут стоять: пробел ” ”, двоеточие “:” или равно “=”. Между аргументами – пробел “ ” или запятая ”,”. Аргументы можно переносить на следующую строку используя обратный слеш “\” в конце текущей строки. В одной строке может быть не более одной директивы. В некоторых директивах конфигурационного файла могут задаваться дополнительные конфигурационные файлы.

Строки конфигурационного файла, расположенные внутри секции и начинающиеся с символов “#”, “!” или “;”, рассматриваются как комментарии и игнорируются. Однако, если указанные символы встречаются в середине или конце строки, они считаются значимыми. Помимо этого, в любом месте конфигурационного файла могут быть расположены комментарии в XML/HTML-стиле, начинающиеся с символов “<!-“- и заканчивающиеся символами “-->”.

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

Ниже приведен фрагмент конфигурационного файла:

<Server>
    WorkDir : /yandex/server
    IPAddress : 192.168.0.1
    Host : myhost
    Port : 17000
    Threads : 5
    QueueSize : 20
    ServerLog : server.log
    <Authorization>
        UserName : user
        UserPassword : password
    </Authorization>
</Server>

<Collection id="abc" autostart="yes">
    IndexDir : workindex
    TempDir : newindex

    MorphFixFile :
    GlobalOptions : Update StoreArchive IgnoreWordFreqs DiscardStopWords StoreIndexingDate
    DocProperty :
    Groups :
    <IndexLog>
        Filename : index.log
        Level : Config Warning Info
    </IndexLog>
    <DocFormat>
        MimeType : text/html
        Config : html.cfg
        ...
    </DocFormat>
    ...
    <DataSrc id="ftds">
        Name : ftds
        Config : config.cfg
        Module : libydftds.so
        Symbol : FTDS_DATASRC_LIB
        ...
    </DataSrc>
    <SearchPageTemplate>
        Method : binary
        Module : libreport.so
        Options :
    </SearchPageTemplate>
    ...
</Collection>

<Collection id="def" autostart="no">
    ...
</Collection>

...