Яндекс.сервер

Материал из База знаний Etersoft
Перейти к навигацииПерейти к поиску

1.Введение

При установке из пакета. Яндекс.сервер — поисковый сервер(вебсервер) включающий в себя модуль индексации(выполняет индексацию документов, на основании которой происходит поиск при поисковом запросе), парсеры(«источники документов», которые анализируют содержимое документов при индексации) и поисковый модуль, который производит поиск по индексу(который строится в ходе индексирования документов). По сути яндекс.сервер является веб-сервером. Для работы модуля индексирования и поискового модуля необходимо запустить яндекс.сервер. Запуск индексирования выполняется вручную. Поисковый модуль включается для каждой коллекции(проиндексированной области) отдельно.

/usr/local/share/yandex — дока и примеры, конфигурационные файлы для тонкого тюнинга индексирования и выдачи поисковых запросов.

/usr/lib — либы необходимые для работы яндекс.сервера

/usr/local/bin — бинарники поисковика.

/usr/local/share/yandex/lib — здесь лежит libperl.so.5.10, этот путь надо добавить в LD_LIBRARY_PATH в скрипт запуска яндекс.сервера yandex-server.sh, без этого яндекс.сервер не запустится.


Рабочая директория по умолчанию /var/local/yandex — временные файлы, индекс и лог.

/usr/local/etc/yandex/yandex.cfg — конф-файл самого поискового сервиса, в котором задаются параметры сервиса/демона и коллекции документов(области индексирования, по которым будет производится поиск).

/usr/local/etc/rc.d/yandex-server.sh — скрипт запуска яндекс.севрера(запуск демона).


2.Создание коллекции/области индексирования

Внимание! Не забудьте изменить адрес хоста, порт, область индексирования и т. д. в соответствии с вашими потребностями.

В /usr/local/etc/yandex/yandex.cfg:

<Server>
   Port : 17000                ## порт
   Host : example.com       ## имя машины
   Threads : 4                 ## количество одновременно обрабатываемых запросов
   QueueSize : 20              ## количество запросов в очереди
   <Authorization>             ## логин и пароль для доступа к административной части
       UserName : admin                    
       UserPassword : tratata
   </Authorization>
</Server>


Для индексирования web-документов(выбранный сайт) создаем секцию такого вида:

<Collection id="example.com" autostart="yes" file="/../example.com.cfg">
</Collection>

id определяет название коллекции, auostart=yes, определяет запуск поиска по этой коллекции при запуске демона яндекс.сервера, file определяет файл в котором описывается коллекция.

В /../example.com.cfg:

 IndexDir      /var/local/yandex/workindex/example.com
 PortionDocCount : 250           ##Определяет максимальное число проиндексированных
                                 ##документов для хранящейся в памяти порции индекса. Чем меньше число,
                                 ##тем дольше выполняется индексация и снижается нагрузка.
 
                                 ##выдача тестовой информации
  <IndexLog>
      # Путь к файлу протокола индексирования.
      FileName       /var/local/yandex/example.com.index.log

      # Уровень выдачи тестовой информации.
      Level verbose moreinfo info debug moredebug
  </IndexLog>
  <DataSrc id="webds">               ##Это название источника данных(по нашему парсер)
        Name : example.com                  ##Обязательный атрибут
        <Webds>
              StartUrls : http://example.com/       ##задаем откуда начать индексировать наш ресурс.

              <HttpOptions name="httpOptions">      ##Это не обязательная подсекция
                  <Authorization>                   ## Для доступа к интернет-ресурсам посхеме BASIC. Это не обязательная сексция.
                   UserName : user                                
                   UserPassword : password
                  </Authorization>
              </HttpOptions>
        </Webds>
  </DataSrc>


Для индексирования содержимого файловой системы создаем такую секцию в /usr/local/etc/yandex/yandex.cfg(в этой секции не выносится конфигурирование коллекции в отдельный файл для наглядности):

 <Collection id="test" autostart="yes">

  PortionDocCount : 250                 ##Определяет максимальное число проиндексированных 
                                        ##документов для хранящейся в памяти порции индекса.
                                        ##Чем меньше число, тем дольше выполняется индексация и
                                        ##снижается нагрузка.
  # директория, в которой будут размещены вновь созданные индексные файлы
  IndexDir      /var/local/yandex/workindex/test

  # выдача тестовой информации
  <IndexLog>
      # Путь к файлу протокола индексирования.
      FileName       /var/local/yandex/test.index.log

      # Уровень выдачи тестовой информации.
      Level verbose moreinfo info debug moredebug
  </IndexLog>


    <DataSrc id="ftds">    ## Парсер
      Name : myTest        ##  обязательный отрибут                                                            
      <Ftds>                                                                                                                      
         <Folder inherited="no">         ## индексация только в этом каталоге                        
             Path /usr/local/share/yandex/ ## путь к каталогу для ндексации
         </Folder>                                                                                                                
         <Extensions>
             text/rtf : .rtf                                     ##Mime-типы файловой
             application/msword : .doc
             application/pdf : .pdf
             application/vnd.ms-excel : .xls
             application/vnd.ms-powerpoint : .ppt
             application/x-shockwave-flash : .swf
             audio/mpeg : .mp3
         </Extensions>
      </Ftds>                                                                                                                     
  </DataSrc>                                                                                                                      

 </Collection>    

Из коробки доступны следующие MIME-типы:

text/html       .html, .htm, .shtml
text/plain      .txt
audio/mpeg      .mp3
text/rtf        .rtf
application/pdf         .pdf
application/msword      .doc
application/vnd.ms-excel        .xls
application/vnd.ms-powerpoint   .ppt
application/x-shockwave-flash   .swf


3.Запуск сервиса/демона

Все ниже описаное подразумевает, что сервис запущен на 17000 порту, адрес хоста example.com.

Делаем симлинк в /etc/init.d/ на /usr/local/etc/rc.d/yandex-server.sh

Для запуска сервиса выполняем команду /etc/init.d/yandex-server.sh start Для запуска индекса выполняем команду /etc/init.d/yandex-server.sh reindex Для запуска поиска по проиндексированным файлам выполняем команду /etc/init.d/yandex-server.sh sstart

После этих действий по адресу http://test.search.ru:17000/имя_коллекции будет доступен поиск по коллекции по адресу http://test.search.ru:17000/admin будет доступна административная часть, в которой можно запустить/остановить переиндексацию, запустить/остановить поиск по заданной коллекции.

Внимание! По умолчанию доступ к административной части яндекс.сервера возможен только с того хоста, на котором он запущен(то есть с localhost) Для доступа с других хостов надо в yandex.cfg в секии <server>…</server> добавить

   <Authorization>             ## логин и пароль для доступа к административной части
       UserName : admin                    
       UserPassword : tratata
   </Authorization>

и в /usr/local/etc/rc.d/yandex-server.sh раскоментировать строку AUTH=admin:tratata

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

Вероятно для успешной индексации придется поправить скрипт запуска сервиса: yandex-server.sh:

reindex() {
     .....
   -do_query "http://$NET_LOC/admin?id=$COLLECTION_NAME&action=bi&brief=yes"
   +do_query "http://$AUTH@$NET_LOC/admin?id=$COLLECTION_NAME&action=bi&brief=yes"


К сожалению индексация производится только при ручном запуске или по крону. По умолчанию стоит обновление уже сделанного индекса. Для небольшого, но часто изменяющего интернет ресурса обновления индекса несколько раз в день более чем достаточно. В кроне 0 */2 0 0 0 /etc/init.d/yandex-server.sh reindex

С установками по умолчания для индексации достаточно машины класса Pentium IV с 512 ОЗУ.

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


5.Поисковая форма

Пример поисковой формы, которую можно размещать на страницах своего сайта.

Ниже приведен пример простой HTML-формы, которую вы надо разместить на страницах веб-сервера для ввода данных для поиска:

 <!-- форма поиска -->
 <form name="search" method="get" action="http://example.com:17000/имя_коллекции">
 <b>Поиск:</b><br>
 <input size="15" name="text" value="" maxlength="200">
 <input type="submit" value=" Найти ">
 </form>