5.2. Формирование страниц с результатами поиска

5.2.1. Механизм взаимодействия с поисковым сервером

Яндекс-сервер ожидает поступления HTTP-запросов по указанному в конфигурации сервера порту. Сервер анализирует запрошенные URL, а именно путь (abs_path в терминах RFC 2616, часть URL до знака вопроса) и запрос (query, часть URL после знака вопроса, содержащую значения полей поисковой формы), выполняя перечисленные ниже действия в указанном порядке.

5.2.2. Сортировка результата поиска и приоритеты релевантности

При выполнении поиска множество найденных документов может быть упорядочено:

При этом сортировка по релевантности может быть только убывающей. В остальных случаях она может быть как убывающей, так и возрастающей.

По умолчанию, сортировка производится независимо для трех разных групп документов, отличающихся степенью соответствия запросу. Этим трем группам соответствуют следующие приоритеты релевантности:

Список найденных документов упорядочивается по приоритетам релевантности в указанном выше порядке.

Под совпадением фразы понимается максимальное соответствие запросу. Обычно это соответствует ситуации, когда состав и порядок слов в запросе полностью совпадает с составом и порядком слов во фрагменте найденного документа. Однако, если в запросе используются операторы ограничения контекста, то приоритет совпадение фразы может описывать иную ситуацию. Например, если был задан запрос

  Анатолий /+2 Бышовец
(с целью узнать отчество персоны), то с совпадением фразы найдутся документы, содержащие фрагмент "Анатолий Федорович Бышовец", а документы, включающие фрагмент "Анатолий Бышовец" найдутся всего лишь со строгим соответствием, и поэтому будут иметь более низкий ранг.

Под строгим соответствием понимается "формальное соответствие запросу". В наиболее распространенной ситуации это означает, что пользователь язык запросов Яндекса не использует, и все слова, которые он перечислил в запросе, содержатся в одном предложении искомого документа.

Нестрогое соответствие запросу может возникнуть, когда в запросе используется оператор нестрогого поиска. В наиболее распространенном случае "документ найден с нестрогим соответствием" означает, что пользователь язык запросов Яндекса не использует, и в этом документе нет ни одного предложения, в котором бы встретились все слова из запроса; есть только предложения, в которых есть самые важные с точки зрения Яндекса слова из запроса (более строго, в этом случае работает алгоритм поиска по кворуму со взвешиванием терминов).

"Нестрогий поиск" может быть задан в терминах языка запросов Яндекса (см. Нестрогий поиск

Следует отметить, что по умолчанию приоритеты релевантности учитываются при альтернативных сортировках. Например, в случае, если документы отсортированы по дате модификации, порядок вышеупомянутых трех групп документов не меняется. Т.е. сначала перечисляются все документы с приоритетом "совпадение фразы", отсортированные внутри этой группы по дате, затем - все документы с приоритетом "строгое соответствие", отсортированные внутри этой группы по дате и т.д. Чтобы отменить учет приоритетов при альтернативных сортировках нужно задать в поисковой форме поле np.

5.2.3. Поля поисковой формы, используемые Яndex.Server 3.8 Free Edition

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

where - значение 1 перенаправляет поисковый запрос на www.yandex.ru
url - сигнализирует, что должен быть показан "подсвеченный" документ
text - в отсутствие параметра url сигнализирует, что должен быть выполнен новый запрос, по умолчанию содержит текст запроса
xml - значение yes сигнализирует о том, что результаты должны быть представлены в XML-формате
numdoc - число документов на одной странице выдачи, если не указано поле g, по умолчанию 10
t - максимальное число фрагментов текста для документа, при их использовании, по умолчанию 3
how - способ сортировки найденных документов, может принимать значения rlv - сортировка по релевантности (степени соответствия запросу), tm - сортировка по дате последней модификации или имя группировочного атрибута
asc - уточняет поле how, указывая сортировку в обратном порядке
np - уточняет поле how, указывая сквозную сортировку без учета групп приоритетности
g - задает группировку найденных документов, это поле подробно описано ниже.
fa - задает фильтрацию найденных документов по атрибуту, это поле подробно описано ниже.

Полей g может быть несколько, по числу необходимых группировок. Поле g имеет структуру mode.attr.ngrp.ndoc.cur, где

mode - тип группировки, 0 - пустая, 1 - плоская или глубокая, если атрибут иерархический, 2 - широкая, имеет смысл только для иерархического атрибута
attr - имя группировочного атрибута, по которому будет осуществляться группировка, в случае пустой группировки - пустая строка.
ngrp - число групп на одной странице
ndoc - максимальное число документов в группе, документы сверх этого числа выкидываются на этапе выполнения группировки
cur - значение атрибута для того узла иерархии, группы документов которого надо показать. Группы, не имеющие этого узла среди "родителей", выкидываются на этапе выполнения группировки. Имеет смысл только в случае иерархического атрибута. Значение по умолчанию -1 (показать всю иерархию).

Заметим, что по умолчанию при выполнении запроса не делается никаких группировок. Для того, чтобы получить ту или иную группировку, необходимо задать поле g. Группировка и сортировка происходят на этапе выполнения запроса, поэтому нельзя использовать функции работы с группами при построении выдачи, если до выполнения поиска не были заданы соответствующие поля.

Поле fa служит для фильтрации найденных документов по значениям указанных группировочных атрибутов. Такая фильтрация выполняется после выполнения поискового запроса, но до начала выполнения группирок. Использование поля fa для фильтрации результатов поиска по группировочным атрибутам предпочтительнее, чем использование поисковых атрибутов в поисковом запросе (если в индексе есть поисковые атрибуты с теми же названиями и числовыми значениями), так как работает быстрее. Поле fa может содержать несколько подвыражений, разделенных точкой с запятой. Каждое подвыражение состоит из названия атрибута, двоеточия и диапазона, в котором должен находиться указанный атрибут у прошедших фильтр документов. Диапазон указывается в виде двух чисел, разделенных дефисом. Если одно из задающих диапазон значений отсутствует, фильтр пройдут документы со значением атрибута большим или меньшим указанного. Пример:

  fa=price:40-50
  fa=f:1-20;d:-30;t:40-

Следующие поля являются служебными и участвуют в формировании адресов страниц с результатами поиска и подсвеченными документами.

q - идентификатор запроса для следующей страницы
p - номер страницы результатов поиска, начиная с нуля
mime - формат подсвеченного документа
charset - кодировка подсвеченного документа
hldoclist - адрес страницы с результатами поиска, на которой находится ссылка на подсвеченный документ.

Copyright © 1997 – 2007 «Яндекс»