|
| ||||||||||||||||||||||
← Ctrl предыдущаяследующая Ctrl → Предварительные сведения
Для полного понимания всех деталей языка запросов необходимы некоторые знания структуры поискового индекса и механизмов выполнения запроса, а также понимание терминологии зон и атрибутов. Эти вопросы рассматриваются в данном разделе. Документы и словопозицииВ дальнейшем термин документ используется для обозначения предмета поиска. Документ содержит сведения, нужные пользователю. Документы входят в коллекцию документов, которая подвергается процедуре индексирования, для того чтобы стал возможен поиск по этой коллекции. Все слова, встречающиеся в коллекции документов, приводятся к своей канонической словарной форме (лемматизируются). Полученные леммы запоминаются в индексе и в дальнейшем называются ключами. Для каждого ключа запоминается список словопозиций, или просто позиций. Каждая словопозиция ключа-леммы включает:
Эти данные позволяют указывать в языке запросов требуемое расстояние между словами и предложениями. ПримерТипичный пример представления леммы в индексе (слова с заглавной буквы считаются отдельными формами): В дополнение к словам, встречающимся в документе, ключами индекса (и, соответственно, частью языка запросов) служат названия поисковых зон и атрибутов документа (подробнее см. в разделе Документные атрибуты). Словопозиции некоторых атрибутов вместо номеров предложений и слов содержат другую информацию (подробности можно найти в следующих разделах). Поисковый запрос, сформулированный на языке запросов Яндекса, указывает, какие ключи надо найти в индексе, и какие операции (объединение, пересечение, взятие диапазона и т. п.) надо произвести над соответствующими списками словопозиций. Результатом выполнения запроса является список документов из итогового множества словопозиций. Документные атрибутыКаждый документ может иметь некоторый набор свойств, таких как заголовок, дата создания, размер, принадлежность к определенному разделу сайта или каталога. Такие свойства документа будем называть документными атрибутами, или просто атрибутами. Атрибуты могут быть непосредственно не связаны с текстом документа, видимым при его просмотре. Каждый атрибут документа получает идентификатор в виде текстовой строки, который в дальнейшем будем называть именем атрибута. Само свойство документа будем называть значением атрибута. Документ в общем случае может иметь произвольное число атрибутов. Каждый атрибут документа может иметь несколько различных значений. С другой стороны, не все атрибуты, определенные в коллекции документов, должны быть определены для данного документа. ПримерРассмотрим коллекцию из двух документов, включающих литературные произведения. Каждый из них имеет документный атрибут datecreated, его значением является дата написания произведения его автором. Первый документ имеет атрибут author со значением "Pushkin", а у второго документа этот атрибут имеет два значения — "Sheckley" и "Zelazny", так как произведение написано в соавторстве. Наконец, у первого документа имеется атрибут inmeter со значением "iambus", а у второго документа этот атрибут отсутствует. В дальнейшем будут рассматриваться только поисковые атрибуты, имена которых используются в языке запросов. (О группировочных и архивных атрибутах см. в разделе Документы, зоны и атрибуты Поисковые документные атрибуты являются частным случаем зонных атрибутов, рассмотренных ниже. Словопозиции, соответствующие документным атрибутам, не содержат номеров слов и предложений. Зоны и зонные атрибутыБольшинство документов имеет внутреннюю структуру, которая позволяет выделить различные части документов — поисковые зоны. ПримерПримеры поисковых зон: параграфы, заголовки различных уровней, ссылки, картинки. Формат электронного письма подразумевает наличие в нем полей from, to, служебных областей, поля сообщения и т. п. Каждая зона может иметь одно или несколько свойств, не связанных непосредственно с ее текстом. Такие свойства зон будем называть зонными атрибутами. Зона в общем случае может иметь произвольное число атрибутов. Каждый атрибут может иметь несколько различных значений. Разумеется, не все атрибуты, определенные в данном массиве документов, должны быть определены для данной зоны. ПримерЗона «to» в электронном письме могла бы иметь свойство «адреса получателей» или «количество адресов рассылки», а зона «ссылка» на другой документ в HTML-документе имеет только свойство «URL документа». Документ размечается на зоны во время индексирования. Каждая зона получает уникальное имя зоны (текстовую строку), используемое в языке запросов, и может быть предметом поиска независимо от других зон. Мы будем называть эти размеченные области документа поисковыми зонами. Каждая поисковая зона имеет точки начала и конца в теле документа, которые всегда приходятся на границы слов. Таким образом, каждой зоне в индексе соответствуют два ключа, словопозиции которых содержат номера слов и предложений, в которых зона начинается и заканчивается. Зонные атрибуты также могут быть помечены в качестве независимых объектов поиска. Такие атрибуты будем называть зонными поисковыми атрибутами, или просто атрибутами. Каждый атрибут имеет уникальное имя (текстовую строку) и значение, которое может быть различного типа, в зависимости от способа его обработки при индексировании. Каждой паре (имя, значение) атрибута соответствует один ключ индекса, словопозиции которого содержат номера слов и предложений, в которых начинается соответствующая зона. Важным частным случаем зоны является зона нулевой длины. Она используется для того, чтобы иметь возможность назначить атрибуты определенной точке внутри документа. Это может быть полезным в случае, когда документ имеет "вложенные потоки", отличающиеся форматом или медиа-типом. ПримерКартинка из HTML-документа расположена в отдельном файле с заданным именем. Это имя — свойство (атрибут) точки документа, в которой расположена картинка. Язык запросов Яндекса позволяет искать в нужной зоне с нужным значением атрибута. Язык запросов и алгоритмы фильтрацииЯзык запросов Яндекса представляет собой контекстно-свободную грамматику, терминалами которой служат слова естественного языка, а также имена зон и атрибутов. В результате анализа запроса формируется набор ключей, по которым из индекса загружаются соответствующие списки словопозиций - листовые ноды или просто листы. Полученные списки позиций затем комбинируются и фильтруются в соответствии с операторами языка в два этапа. Сначала формируются несколько списков эффективных позиций. Каждая эффективная позиция является либо элементарной позицией, соответствующей листовой ноде, либо скобкой. Позиции-скобки получаются комбинированием операций пересечения (строгого многоместного AND) и объединения OR и, в отличие от элементарных позиций, имеют длину, - то есть позиции начала и конца. Разбиение строки запроса на скобки осуществляется как явным заданием скобок, так и при помощи использования приоритета операций. На заключительном этапе выполняется многоместный оператор AND, который может быть мягким. К листу, скобке как к целому, а также к многоместному AND верхнего уровня могут быть последовательно применены один или несколько фильтров. Фильтры могут быть простыми и ранжирующими. Простые фильтры отфильтровывают ненужные позиции, а ранжирующие не изменяют множество позиций, но устанавливают свойство, что в итоговом результате документы, в которых есть только позиции, не прошедшие фильтр, будут гарантированно ниже остальных документов. В дальнейшем мы будем обозначать латинскими буквами a, b, c, . . . лист или скобку. |
| Работайте в Яндексе |
© 2008—2012 «Яндекс»
|