Механизм взаимодействия с поисковым
В процессе выполнения поискового запроса поисковый сервер вызывает следующие функции, которые могут быть написаны разработчиком страницы с результатами поиска. Если какая-либо из функций не предоставлена разработчиком поисковой страницы, будет использована реализация по умолчанию, такая же, как во встроенном дизайне.
sub UserInitИспользуется только для языка Perl. Вызывается только один раз при старте поискового сервера для инициализации перловых переменных.
int UserHttpHeaders(ISearchContext* ysc)sub UserHttpHeaders
Вызывается в самом начале формирования страницы с результатами поиска для установки дополнительных HTTP-заголовков.
void UserRequest(ISearchContext* ysc)sub UserRequest
Вызывается до выполнения поискового запроса. Предназначена для преобразования полей поисковой формы в строку запроса на языке запросов Яндекса. Использование этой функции полезно, если пользователи системы не знакомы с языком запросов и используют переключатели формы для уточнения области поиска. В этой функции также можно установить поля запроса, влияющие на сортировку и группировку с помощью вызова FormFieldInsert. На C++ текст запроса следует установить с помощью функции void IReqResults::SetUserRequest(const char *req), на Perl запрос является возвращаемым значением.
int UserReport(ISearchContext* ysc)sub UserReport
Вызывается после выполнения запроса для формирования страницы с результатами поиска. Вся структура и дизайн страницы результатов задается в этой функции.
В процессе формирования документа с подсвеченными словами
поисковый сервер вызывает следующие функции, которые могут быть написаны разработчиком страницы с результатами поиска. Если какая-либо из функций не предоставлена разработчиком поисковой страницы, будет использована реализация по умолчанию, такая же, как во встроенном дизайне. void HitStartBody(ISearchContext* ysc)
Hit::StartBody()
Верхняя вывеска-табличка в подсвеченном документе.
void HitEndBody(ISearchContext* ysc, int DocChanged, int FoundInBody, int FoundInCData)Hit::EndBody(DocChanged, FoundInBody, FoundInCData)Нижняя вывеска-табличка в подсвеченном документе.
DocChanged - равен 0, если документ не был изменен с момента последнего индексирования, в противном случае равен 1. |
FoundInBody - найдено слов в теле документа (можно подсветить) |
FoundInCData - найдено слов в области, не разрешающей подсветку (заголовок документа, меню, многострочные области ввода) |
void HitFirst(ISearchContext* ysc)
Hit::First()Стрелочка-ссылка на первое найденное слово.
void HitLast(ISearchContext* ysc)
Hit::Last()Стрелочка-ссылка на последнее найденное слово.
void HitLeft(ISearchContext* ysc, int word_num, int word_prev_num)
Hit::Left(word_num, word_prev_num)Стрелочка-ссылка на предыдущее найденное слово.
word_num - номер найденного слова |
word_prev_num - номер предыдущего найденного слова |
void HitRight(ISearchContext* ysc, int word_num)
Hit::Right(word_num)Стрелочка-ссылка на следующее найденное слово.
word_num - номер найденного слова |