На главную

RiSearch v.1.0 Manual

© С. Тарасов

Вид результатов поиска

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

Подсветка ключевых слов

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

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

     stored_descr_size => 512, 
     descr_size => 256, 

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

  2.       При использовании директивы  read_file_from_local_disk => "YES",  скрипт сперва пытается прочесть файл с локального диска (при этом в адресе файла base_url заменяется на base_dir). Если файл прочтен успешно, из него удаляются теги и в результатах поиска будет напечатана строка длиной $descr_size с наибольшей концетрацией ключевых слов. Если же при попытке прочесть файл произошла ошибка, используется первый способ (поэтому в любом случае желательно сохранить короткое описание в индексе). Подсветка ключевых слов в больших файлах может занять достаточно много времени, поэтому можно ограничить объем текста, в котором будут искаться ключевые слова для подсветки ( read_file_from_local_disk_limit => 50000, ).

      Как именно будет подсвечено слово задается параметрами mark_start и mark_end.

Использование шаблонов

      Шаблон состоит из нескольких секций: "header" и "footer" будут выводиться всегда в начале и конце страницы; "results_header", "results" и "results_footer" выводятся при успешном поиске; "no_results" выводится, если поиск дал нулевой результат; "empty_query" выводится при пустом запросе.

      Каждая секция шаблона разделена метками вроде этой:

 <!-- RiSearch::header::start --> 
Вы можете редактировать все, что находится между двумя разделителями.

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

  1.  %query%  - запрос.

  2.  %search_time%  - время выполнения скрипта.

  3.  %query_statistics%  - статистика найденных слов (т.е. строка вида - "слово1-N1 слово2-N2").

  4.  %stpos%  - порядковый номер, с которого начинаются результаты на данной странице (начинается с 0).

  5.  %url%, %title%, %description%, %date%  - URL найденного файла, его заголовок, описание и дата последнего изменения файла.

  6.  %enc_url%  - кодированный URL.

  7.  %size%  - размер документа (байты).

  8.  %ksize%  - размер документа (килобайты).

  9.  %score%  - рейтинг документа.

  10.  %rescount%  - общее число найденных файлов.

  11.  %next_results%  - линки на следующие страницы с результатами поиска (выдаются блоками по 20 страниц).

  12.  %prev_page%  - линк на предыдущую страницу с результатами поиска (или пустая строка, если текущая страница первая).

  13.  %next_page%  - линк на следующую страницу с результатами поиска (или пустая строка, если текущая страница последняя).

  14.  %prev_pages%  - линк на предыдущий блок страниц с результатами поиска (или пустая строка, если текущий блок первый).

  15.  %next_pages%  - линк на следующий блок страниц с результатами поиска (или пустая строка, если текущий блок последний).

  16.  %res_num%  - число результатов на странице.

  17.  %zones_names%  - список названий разделов, в которых проводился поиск (или пустая строка, если поиск шел по всему сайту).

  18.  %zones_str%  - список зон из строки запроса (строка вида "&z=1&z=3", может применяться при формировании ссылок для поиска с другими параметрами, но по текущим разделам).

  19.  %ndquery%  - недекодированная строка запроса (может применяться для ручного создания ссылок).

  20.  %sorting%  - тип сортировки (принимает значения "R", "D", "S" и "N").

  21.  %stype%  - режим поиска (принимает значения "AND" или "OR").

  22.  %rand_number%  - случайное число в пределах от нуля до 256. Можно использовать в кодах баннерных систем (число фиксировано в пределах секции, но генерируется заново для каждой секции).

  23.  %right_form("файл","файла","файлов")%  - данный параметр предназначен для русскоязычных сайтов. Он выводит на страницу необходимую форму слова, в соответствии в числом найденных файлов. Вы можете заменить слово "файл" любым другим словом, только соблюдайте такой же порядок форм. Например:
    %right_form("Найден","Найдено","Найдено")%: %rescount% %right_form("файл","файла","файлов")%

Использование нескольких шаблонов

      Скрипт может использовать несколько шаблонов для печати результатов. Каждый дополнительный шаблон должен быть определен в конфигурационном файле следующим образом:  template_1 => "templates/template_1.htm",   template_2 => "templates/template_2.htm", 

      Используйте параметр "t=N" (где N номер шаблона) в запросе, чтобы вывести результаты поиска в нестандартном шаблоне.

Дополнительные возможности шаблонов

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

<% IF %condition% %> Print something <% ENDIF %>

в котором действия выполняются в том случае, если условие (%condition%) истинно, и

<% IF %condition% %> Print 1 <% ELSE %> Print 2 <% ENDIF %>

в котором при истинном условии выполняются действия "Print 1", и действия "Print 2" в противном случае.

      Условия (%condition%) выглядят таким образом:


%sorting% == "R"     - условие истинно, если параметр %sorting% равен "R"
%zones_names% == "News"     - условие истинно, если параметр %zones_names% равен "News"
%prev_page% != ""     - условие истинно, если параметр %prev_page% НЕ равен пустой строке

      Использовать данные операторы можно примерно таким образом:

<% IF %sorting% == "R" %>(Score: %score%)<% ENDIF %>

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

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

<% DO %> %stpos% + %res_num% <% ENDDO %>

      Например, следующий код напечатает диапазон номеров ссылок на текущей странице:

<% DO %> %stpos% + 1 <% ENDDO %>
..
<% IF %next_page% == "" %> %rescount% <% ELSE %><% DO %> %stpos% + %res_num% <% ENDDO %><% ENDIF %>

      Оператор "DO" может быть вложен в оператор "IF", другие вложения недопустимы. Примеры использования операторов можно найти в файле "demo_template.htm".

Sever Side Includes

      Sever Side Includes (SSI) как правило не работают совместно со скриптами. Это связано с ограничениями, накладываемыми вебсервером и исправить это нельзя (точнее, эта проблема была решена во второй версии вебсервера Апач, но скорее всего вам пока не удастся найти хостинг с этой версией). Поэтому приходится искать обходные пути. Сушествует несколько возможных решений данной проблемы:

  • вручную править шаблон каждый раз, когда на сайте меняется оформление;
  • использовать готовые перловые модули, но вам скорее всего придется ставить и настраивать их самостоятельно;
  • можно вызывать сам поисковый скрипт из SHTML страницы;
  • RiSearch Pro позводляет использовать в шаблонах простейшие SSI директивы (только <!--#include virtual='file'--> поддерживаются в данный момент).
  • также возможно в конфиге указать полный URL для шаблона (search_template => "http://www.server.com/templates/template.htm"), скрипт пошлет отдельный запрос к серверу, сервер обработает SSI директивы в шаблоне и вернет его скрипту, затем скрипт заполнит шаблон и вернет его пользователю (шаблон нужно будет перенести в доступную область сайта, потому что сервер не отдаст документ, лежащий в cgi-bin). Учтите, что этот вариант может замедлить выдачу ответа пользователю.


http://risearch.org С.Тарасов, © 2000-2003