Глава 4. Архитектура, настройка и администрирование Яndex.Server 3.4

Содержание
4.1. Компоненты сервиса
4.2. Запуск Яndex.Server
4.3. Ключи командной строки
4.4. Конфигурирование Яndex.Server
4.5. Конфигурирование коллекции документов
4.6. Запуск и остановка индексатора и поискового сервера
4.7. CGI-параметры административной страницы
4.8. Использование статических картинок

4.1. Компоненты сервиса

Яndex.Server 3.4 представляет собой системный сервис для организации полнотекстового поиска информации в заданных коллекциях документов. Сервис состоит из следующих основных компонентов.

Яndex.Server

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

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

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

Индексатор

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

Поисковый сервер

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

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

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

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

Получив результаты поиска, поисковый сервер формирует веб-страницу с результатами поиска, используя шаблон страницы, указанный администратором сервиса. Шаблон страницы может быть написан на языках XSLT, Perl или C++. В комплект поставки входят рабочие примеры шаблонов на всех языках. Если шаблон страницы не указан, поисковый сервер сформирует страницу результатов поиска в соответствии со своим внутренним шаблоном. Более подробно методы создания шаблонов страниц описаны в разделе Формирование страниц с результатами поиска.

4.2. Запуск Яndex.Server

Запуск и остановка Яndex.Server происходят по-разному в операционных системах Windows и Unix.

Особенности Windows-версии. Яndex.Server реализован в программном модуле yandex.exe и является сервисом операционной системы. Для Windows NT/2000/XP запуск и остановка сервиса может быть осуществлены посредством приложения Service панели управления или с помощью команды NET. В параметрах сервиса может быть указан автоматический запуск. В Windows 95/98/Me запуск yandex.exe производится автоматически после перезагрузки операционной системы и до входа в систему первого пользователя. Во всех случаях сервис должен быть предварительно установлен с помощью запуска программы с ключом -i. При запуске yandex.exe без ключей под Windows NT/2000/XP программа работает как обычное консольное приложение.

Особенности Unix-версии. Яndex.Server реализован в программном модуле /usr/local/sbin/yandex. Для автоматического запуска этого модуля при старте операционной системы проще всего воспользоваться готовым управляющим скриптом yandex.sh, входящим в комплект поставки. Этот скрипт должен находиться в каталоге, содержащем скрипты запуска приложений при загрузке вашего компьютера:

  • в Linux - обычно это каталог /etc/rc.d/init.d. Именно в этом каталоге должен находиться скрипт yandex.sh. Кроме того, на файл yandex.sh должны вести символические ссылки из каталогов /etc/rc.d/rc0.d, /etc/rc.d/rc2.d и /etc/rc.d/rc3.d для корректного запуска и остановки Яndex.Server 3.4 на разных уровнях выполнения операционной системы.

  • во FreeBSD-4.2 или выше - это каталог /usr/local/etc/rc.d

  • в случае Solaris (SPARC) - файл yandex.sh должен находиться в каталоге /etc/init.d и на него должны идти символические ссылки из каталогов /etc/rc0.d/ и /etc/rc2.d/

Для остановки Яndex.Server 3.4 запустите скрипт yandex.sh с опцией stop.

Для перезапуска Яndex.Server 3.4 запустите скрипт yandex.sh с опцией restart.

4.3. Ключи командной строки

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

-a значение

IP-адрес, на котором работает Яndex.Server. В отсутствие ключа IP-адрес может быть установлен в директиве IPAddress конфигурационного файла.

-p значение

Порт, на котором работает Яndex.Server. В отсутствие ключа порт может быть установлен в директиве Port конфигурационного файла.

-h значение

Хост, на котором работает Яndex.Server. В отсутствие ключа хост может быть установлен в директиве Host конфигурационного файла.

-t значение

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

-q значение

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

-d

Запускает сервис как обычное консольное приложение.

-v

Печатает номер версии, после чего завершается.

-i

Устанавливает yandex.exe как сервисное приложение операционной системы Windows, после чего завершается. Только для Windows-версии.

-r

Отменяет установку yandex.exe как сервисного приложения операционной системы Windows, после чего завершается. Только для Windows-версии.

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

4.4. Конфигурирование Яndex.Server

Конфигурация Яndex.Server задается в необязательной секции Server конфигурационного файла сервиса.

Конфигурации индексатора и поискового сервера задаются в секции Collection конфигурационного файла сервиса.

Секция Server состоит из директив IPAddress, Port, Host, Threads, QueueSize, WorkDir, ServerLog и подсекции Authorization. Ни одна из директив или секций не является обязательной.

Директивы секции Server

IPAddress

Устанавливает IP-адрес, на котором работает Яndex.Server. Значение должно соответствовать одному из допустимых IP-адресов компьютера.

По умолчанию Яndex.Server работает на всех IP-адресах компьютера.

Port

Устанавливает порт, на котором работает Яndex.Server. Поисковые HTTP-запросы необходимо будет посылать на этот порт.

Значение по умолчанию: 17000

Host

Устанавливает хост, на котором работает Яndex.Server.

Значение по умолчанию: официальное имя хоста. Например, если используется локальный файл hosts, это будет первая запись после IP-адреса.

Threads

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

Значение по умолчанию: 5

QueueSize

Определяет максимальный размер очереди поисковых запросов, ожидающих начала выполнения. В случае нулевого значения директивы максимальный размер очереди запросов бесконечен. Если начала выполнения уже ожидает определяемое данной директивой количество запросов, на вновь поступившие запросы сервер отвечает "HTTP/1.0 503 Service Unavailable" и не выполняет их.

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

Значение по умолчанию: 0

WorkDir

Рабочая директория Яndex.Server. Должен быть указан абсолютный путь. Если в других директивах конфигурационного файла заданы относительный пути, они будут приведены к абсолютным относительно этой директории.

Значение по умолчанию: директория, из которой запущена программа (Unix-системы) или директория, в которой находится yandex.exe (Windows)

ServerLog

Путь к файлу,в который будут выводиться сообщения Яndex.Server, абсолютный или относительно WorkDir.

Значение по умолчанию: yandex.log

Подсекция Authorization предназначена для задания параметров авторизации административного режима, предназначенного для управления веб-сервером. Авторизация проходит по схеме BASIC. В секцию входят следующие директивы:

Директивы подсекции Authorization

UserName

имя пользователя

UserPassword

пароль пользователя

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

Пример 4-1. Пример конфигурации HTTP-сервера

Ниже приведен пример секции конфигурационного файла, в которой заданы настройки веб-сервера.

  <Server>
      Port 80
      Host yandex-search.mysite.ru
      Threads 4
      QueueSize 20
      <Authorization>
          UserName useradmin
          UserPassword asdf12345
      </Authorization>
  </Server>

4.5. Конфигурирование коллекции документов

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

Если коллекций документов более одной, каждая секция Collection должна иметь атрибут id, определяющий имя коллекции документов. Это имя мы будем также считать именем индексатора и именем поискового сервера, соответствующих данной коллекции документов. Имя коллекции документов может быть произвольной текстовой строкой, за исключением строки "admin", которая используется в специальных HTTP-запросах, управляющих Яndex.Server, строки "images", которая зарезервирована для виртуальной директории с картинками и строки "hl", используемой для подсвеченных документов.

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

4.6. Запуск и остановка индексатора и поискового сервера

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

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

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

В отличие от индексатора, поисковый сервер после запуска находится в постоянном ожидании запросов на поиск. Для успешного старта поисковому серверу необходимы индексные файлы, созданные индексатором.

По умолчанию, после старта Яndex.Server индексатор находится в остановленном состоянии, а поисковый сервер, при наличии индексных файлов, автоматически стартует. Чтобы поисковый сервер не стартовал в момент запуска Яndex.Server, секция Collection должна иметь атрибут autostart со значением no.

Если при старте Яndex.Server поисковый сервер для какой-либо коллекции документов не стартовал (например, по причине отсутствия индексных файлов), веб-сервер продолжает работать. На поисковые запросы по этой коллекции сервер отвечает, что поиск остановлен. Однако, если атрибут autostart секции Collection имеет значение must, Яndex.Server автоматически завершит работу. Эта настройка может оказаться важной для инструментов автоматического мониторинга работоспособности поиска.

4.7. CGI-параметры административной страницы

Для запуска и остановки индексатора или поискового сервера служит специальная административная страница Яndex.Server, имеющая адрес /admin. С помощью расположенных на этой странице кнопок можно выполнить требуемые действия. Использование указанных кнопок эквивалентно следующим HTTP-запросам к Яndex.Server (если задано более одного HTTP-запроса, можно использовать любой из них):

ДействиеHTTP-запрос
Начать индексирование/admin?id=value&action=bi
/admin?id=value&action=startindexer
Остановить индексирование/admin?id=value&action=ei
/admin?id=value&action=stopindexer
Начать поиск/admin?id=value&action=bs
/admin?id=value&action=startsearch
Остановить поиск/admin?id=value&action=es
/admin?id=value&action=stopsearch
Перезапустить поиск/admin?id=value&action=restartsearch
Очистить кеш поисковых запросов/admin?id=value&action=clearcache
Остановить Яndex.Server/admin?action=shutdown

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

В ответ на указанные запросы Яndex.Server возвращает административную страницу с новым состоянием кнопок, полученным после выполнения запрошенной команды. Если запросы выполняются из внешнего планировщика задач, удобно запретить формирование ответной HTML-страницы. Для этого нужно к запросу добавить параметр brief со значением yes. Чтобы узнать статус индексатора и поискового сервера, задайте один из следующих HTTP-запросов:

ДействиеHTTP-запрос
Запретить формирование ответной HTML-страницы/admin?brief=yes&action=_действие_из_предыдущей_таблицы_
Запросить статус всех коллекций Яndex.Server/admin?action=statusall
Запросить статус определенной коллекции Яndex.Server/admin?id=value&action=status

4.8. Использование статических картинок

Если дизайн страниц с результатами поиска требует использования картинок, эти картинки можно разместить на каком-либо внешнем Яndex.Server и указать их веб-адреса в скрипте, создающем страницу результатов (см. главу Формирование страниц с результатами поиска). Тем не менее, чтобы сделать Яndex.Server самодостаточным, предусмотрена возможность выдачи статических картинок, пути веб-адресов которых начинаются с /images/. С этими адресами будут выдаваться все картинки с расширениями gif, jpg и png, расположенные в поддиректории ./images директории, в которой находится выполняемый модуль Яndex.Server для Windows, либо директории, из которой запущена программа, для Unix.

Copyright © 1997 – 2005 «Яндекс»