Руководство по системе Яndex.Site
: Настройка системы
: Конфигурация (UNIX)
: Приложение 1. Формирование строки и формы запроса
Previous: Настройка поискового сервера
Next: Приложение 2. Формат страниц с результатом поиска
3.1.5. Приложение 1. Формирование строки и формы запроса
При работе с Яndex'ом Web-администратор может изменить по своему вкусу и страницу запроса, и выдачу (список найденного), и оформление подсвеченного документа. Яndex имеет собственный язык формирования строки запроса и страницы результата из параметров
CGI-сценария.
Формальная строка запроса состоит из операторов вида: %{attr} , разделенных логическими операторами языка запросов Яndex и имеющих следующий синтаксис:
Конструкция на входе Строка на выходе
%{attr} Значение_параметра_attr
%{attr:string} string + значение_параметра_attr
%{attr*:string} для каждого параметра с именем attr
подставляется конструкция вида:
'|' + string + значение_параметра_attr
%{attr=value:string} string , если есть параметр attr с заданным
значением value
%{attr=value:s1:s2} s1 , если есть параметр attr
с заданным значением value, иначе s2
Пример:
Конструкция строки запроса
(%{text}) && %{qtitle:$Title } && (%{sub=*:#subtree=})
будет обрабатываться следующим образом:
вместо CGI-параметра text подставляется его значение
если есть параметр qtitle , подставляется строка '$Title ' и значение параметра qtitle
если есть несколько параметров с одинаковыми именами sub , то для каждого из них подставится конструкция вида "| #subtree= " и значение параметра sub .
По умолчанию формальная строка запроса имеет вид "%{text}" (таким образом, параметр text является единственным обязательным), сконфигурировать эту строку можно в файле ywsearch.rep (ресурс Report.ReqTrans).
Пример поисковой страницы:
поисковая страница состоит из следующих элементов:
строка запроса - текстовое поле с именем text
строка уточнения - текстовое поле с именем refine
зона поиска - флажки с именами inText, inTitle, inRef (если ничего не указано, по умолчанию поиск будет происходить по всему тексту)
раздел поиска - меню (возможен множественный выбор) с именем sub и значениями 'yandex', 'telephony', 'radio', 'news' (если ничего не указано, по умолчанию поиск будет происходить по всему серверу)
< FORM NAME = "search" METHOD="get" ACTION=http://www.comptek.ru/cgi-bin/yandsearch>< BR >< B > Запрос: < /B > < INPUT TYPE=text NAME=text SIZE=20 VALUE="" MAXLENGTH=80 >< BR >< B > Уточнение:< /B >
< INPUT TYPE=text NAME=refine SIZE=20 VALUE="" MAXLENGTH=80 >
< BR >
< B > Зона поиска:< /B >
< INPUT TYPE=checkbox NAME=inText CHECKED > Поиск по всему тексту
< INPUT TYPE=checkbox NAME=inTitle > Поиск в заголовках
< INPUT TYPE=checkbox NAME=inRef > Поиск в ссылках
< BR >
< B > Раздел:< /B >
< SELECT NAME=sub MULTIPLE >
< OPTION VALUE=yandex > Поисковые системы
< OPTION VALUE=telephony > Компьютерная телефония
< OPTION VALUE=radio > Беспроводные сети
< OPTION VALUE=news > Новости
< /SELECT >
< P >
< INPUT TYPE=submit VALUE="Поиск" >
< /FORM >
При поиске слова 'article' в заголовках документов раздела 'Поисковые системы' будет выдана следующая строка запроса:
http://www.comptek.ru/cgi-bin/yandsearch?text=article& refine=& inTitle=on& sub=yandex
При поиске слова 'radioethernet' с уточнением 'arlan' в текстах документов раздела 'Беспроводные сети' будет выдана следующая строка запроса:
http://www.comptek.ru/cgi-bin/yandsearch?text=radiot& refine=arlan& inText=on& sub=radio
Пример страницы с результатом поиска:
страница с результатом поиска ( формируется по данным файла ywsearch.rep, если такой файл существует, иначе - по умолчанию):
< FORM NAME = "search" METHOD="get" ACTION="http://www.comptek.ru/cgi-bin/yandsearch" >
< BR >
< B > Запрос:< /B >
< !-Поисковый сервер заменяет %{text} на значение параметра text -- >
< INPUT TYPE=text NAME=text SIZE=20 VALUE="%{text}" MAXLENGTH=80 >
< BR >
< B > Уточнение:< /B >
< !-Поисковый сервер заменяет %{refine} на значение параметра refine -- >
< INPUT TYPE=text NAME=refine SIZE=20 VALUE="%{refine}" MAXLENGTH=80 >
< BR >
< B > Зона поиска:< /B >
< !-- Если есть параметр inText и его значение = on, поисковый сервер подставит CHECKED -- >
< INPUT TYPE=checkbox NAME=inText %{inText=on:CHECKED} > Поиск по всему тексту
< !-- Остальные строки обрабатываются аналогично-- >
< INPUT TYPE=checkbox NAME=inTitle %{inTitle=on:CHECKED} > Поиск в заголовках
< INPUT TYPE=checkbox NAME=inRef %{inRef=on:CHECKED} > Поиск в ссылках
< BR >
< B > Раздел:< /B >
< !-- Если есть параметр sub и его значение совпадает с заданными, поисковый сервер подставит SELECTED -- >
< SELECT NAME=sub MULTIPLE >
< OPTION VALUE=yandex %{sub=yandex:SELECTED} > Поисковые системы
< OPTION VALUE=telephony %{sub=telephony:SELECTED} > Компьютерная телефония
< OPTION VALUE=radio %{sub=radio:SELECTED} > Беспроводные сети
< OPTION VALUE=news %{sub=news:SELECTED} > Новости
< /SELECT >
< P >
< INPUT TYPE=submit VALUE="Поиск" >
< /FORM >
Для корректной работы нужно следить за тем, что бы имена параметров CGI-сценария на начальной поисковой странице в точности совпадали с именами полей заполняемых форм на странице с результатом поиска.
Руководство по системе Яndex.Site
: Настройка системы
: Конфигурация (UNIX)
: Приложение 1. Формирование строки и формы запроса
Previous: Настройка поискового сервера
Next: Приложение 2. Формат страниц с результатом поиска
|