На главную
RiSearch v.1.0 Manual
© С. Тарасов
Вид результатов поиска
Данный скрипт используют шаблоны для изменения дизайна
вывода результатов поиска. Шаблоны размещены в директории "templates".
Это обычные HTML файлы, вы можете открыть их в любом броузере и посмотреть,
как будет выглядеть Ваша страница, и при желании изменить дизайн по своему
усмотрению.
Подсветка ключевых слов
В результатах поиска скрипт может выводить заголовок документа,
его описание и URL. Внешний вид результатов поиска задается в шаблоне.
В описании документа подсвечиваются ключевые слова, которые были
введены при поиске. На данный момент реализованы два способа
вывода описания.
Описание страницы хранится в индексе. Вы можете регулировать
длину описания, которое скрипт сохраняет и число символов,
которые будут показаны в результатах поиска, например:
stored_descr_size => 512,
descr_size => 256,
В данном случае, в индексе будут храниться первые 512 байт каждого документа.
Если в них встречаются ключевые слова, в результатах будут показаны
256 байт с наибольшей концентрацией ключевых слов. Ключевые слова
при этом будут подсвечены.
При использовании директивы 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 -->
Вы можете редактировать все, что находится между двумя разделителями.
В шаблоне используется несколько предопределенных параметров, на место
которых будет подставлен результат выполнения скрипта. Вот полный список
параметров:
%query%
- запрос.
%search_time%
- время выполнения скрипта.
%query_statistics%
- статистика найденных слов (т.е. строка вида - "слово1-N1 слово2-N2").
%stpos%
- порядковый номер, с которого начинаются результаты на данной странице (начинается с 0).
%url%, %title%, %description%, %date%
- URL найденного файла, его заголовок, описание и дата последнего изменения файла.
%enc_url%
- кодированный URL.
%size%
- размер документа (байты).
%ksize%
- размер документа (килобайты).
%score%
- рейтинг документа.
%rescount%
- общее число найденных файлов.
%next_results%
- линки на следующие страницы с результатами поиска (выдаются блоками по 20 страниц).
%prev_page%
- линк на предыдущую страницу с результатами поиска (или пустая строка, если текущая страница первая).
%next_page%
- линк на следующую страницу с результатами поиска (или пустая строка, если текущая страница последняя).
%prev_pages%
- линк на предыдущий блок страниц с результатами поиска (или пустая строка, если текущий блок первый).
%next_pages%
- линк на следующий блок страниц с результатами поиска (или пустая строка, если текущий блок последний).
%res_num%
- число результатов на странице.
%zones_names%
- список названий разделов, в которых проводился поиск (или пустая строка, если поиск шел по всему сайту).
%zones_str%
- список зон из строки запроса (строка вида "&z=1&z=3", может применяться при
формировании ссылок для поиска с другими параметрами, но по текущим разделам).
%ndquery%
- недекодированная строка запроса (может применяться для ручного создания ссылок).
%sorting%
- тип сортировки (принимает значения "R", "D", "S" и "N").
%stype%
- режим поиска (принимает значения "AND" или "OR").
%rand_number%
- случайное число в пределах от нуля до 256. Можно использовать в кодах
баннерных систем (число фиксировано в пределах секции, но генерируется заново
для каждой секции).
%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). Учтите, что этот вариант может замедлить выдачу ответа пользователю.
|