Поиск текста на вебсайте
| |
|
Данное приложение предназначено для организации простой поисковой системы на
виртуальном WWW сервере. Оно использует систему glimpse для построения
индексов, что позволяет значительно ускорить поиск.
Обработка запроса и
форматирование результатов поиска производится cgi скриптом, использующим
технологию шаблонов. Это позволяет оформить результаты поиска в полном
соответствии с дизайном сервера.
Подробнее о шаблонах и их использовании в скриптах
Данная поисковая система не имеет никаких ограничений на количество и
объем индексируемых документов, однако файлы с индексами занимают дисковое
пространство.
Индексацию сайта необходимо предварительно включить на сервере статистики
(выбрав пункт "Управление услугой" в свойствах конкретного домена).
Индексатор предполагает, что кодировка файлов - windows-1251.
Соответственно руский поиск (большие/маленькие буквы) выполняется
именно с учетом этой кодировки.
Индексатор ищет все файлы с расширениями .html, .htm, .shtml, .shtm, .HTM
находящиеся в директории www (и дальше по дереву поддиректорий). Если нужно
ограничить доступ индексатора до определенных директорий, то в директории
www нужно сделать
стандартный файл robots.txt. Имя индексатора - Gliws.
#robots.txt for http://www.domain/
User-agent: Gliws
Disallow: /dir/
Disallow: /other-dir/
Индексатор автоматически запускается раз в сутки в промежутке с 22:45 до
23:30. Индексы лежат в директории ~/.gliws. Для ручного запуска
индексатора необходимо использовать программу "glindex" из unix shell.
CGI скрипт gliws.pl должен получать следующие параметры:
- query - запрос на поиск. (обязательный параметр)
- partial - поиск частей слов (по умолчанию - нет, т.е. поиск полных слов)
- records - сколько выводить записей на страницу (по умолчанию 10)
PATH_INFO (путь после имени скрипта) должен указывать на шаблоны, без
указания расширения.
В данном приложении используются следующие шаблоны:
- .tpl - вывод записей. Понимает переменные:
^total,^first,^last,^query,^#,^title,^text,^url,^next,
^prev.
- .err - вывод ошибки. Понимает переменную ^error - собственно, текст ошибки.
- .nof - Выводится в случае, если документов не найдено. Не понимает
переменных.
В шаблоне .tpl используются следующие переменные (помимо
стандартных):
- ^total - количество найдено документов
- ^first - номер первого документа на странице
- ^last - номер последнего документа на странице
- ^query - запрос на поиск
- ^# - номер документа
- ^title - название документа (<title>)
- ^text - содержимое тэга <META NAME="DESCRIPTION" или первые строки документа
- ^url - Путь к документу
- ^next - переход к следующей странице
- ^prev - переход к предыдущей странице
Правила поиска
То, что пользователь задал в кавычках или скобках, ищется как есть. Слова,
заданные вне кавычек, ищутся, как если бы между ними стоял оператор AND.
Слова могут объединятся оператором AND (алиасы &, &&) или OR
(|,||). Конструкции могут объединятся скобками.
Примечание:
не рекомендуется задавать слишком длинный текст
в кавычках - glimpse этого не любит. Лучше объединять слова AND'ом.
Если в запросе будут большие буквы, то запрос воспринимается как
Case Sensitive (учет размера букв при поиске). В противном случае
case insencitive.
Максимальное количество выдаваемых документов 200. Если при поиске
будет найдено 200 документов, то скорее всего необходимо
уточнить критерий поиска.
Пример поиска
(пушкин & 'евгений онегин') OR (мой AND дядя AND самых AND честных AND правил)
Пример вызова скрипта
<FORM METHOD="GET" ACTION="/cgi/gliws.pl/templates/gliws">
<!-- /templates/gliws - путь к шаблону.
Скрипт будет искать шаблон ~/templates/gliws.* -->
Search For:<INPUT TYPE="text" NAME="query" VALUE="" SIZE=50>
<p>
Results per page:
<select name="records" size=1>
<option selected value="10">10</option>
<option value="25">25</option>
<option value="50">50</option></select>
<P>
<INPUT TYPE="checkbox" NAME="partial">
<P>
<INPUT TYPE="submit" NAME="Search" VALUE="Search">
</FORM>
В шаблоне должны присутствовать строки
и
между которыми будет находится шаблон записи о найденном документе.
Особенности использования
Если Вы хотите чтобы в результатах поиска корректно отображалось краткое описание документа, которое
в html-коде было включено в тэг <title></title>, нужно обратить особое внимание на то,
что <title> должен находиться до META-тэга "Description".
Пример файла .tpl