1.2. Документы, зоны и атрибуты

1.2.1. Понятие документных атрибутов

В данной документации термин документ используется для обозначения предмета поиска. Документ содержит сведения, нужные пользователю. Результат поискового запроса представляет собой список документов, возможно разбитый на группы, и для каждого документа в списке найденных документов известен некоторый набор свойств, таких как заголовок, дата создания, размер, принадлежность к определенному разделу сайта или каталога. Такие свойства документа будем называть документными атрибутами, или просто атрибутами. Атрибуты могут быть непосредственно не связаны с текстом документа, видимым при его просмотре.

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

Пример 1-2. Документные атрибуты

Рассмотрим коллекцию из двух документов, включающих литературные произведения. Каждый из них имеет документный атрибут datecreated, имеющий значение даты написания произведения его автором. Первый документ имеет атрибут author со значением Pushkin, а у второго документа этот атрибут имеет два значения - Shecly и Zelazny, так как произведение написано в соавторстве. Наконец, у первого документа имеется атрибут in_meter со значением iambus, а у второго документа этот атрибут отсутствует.

По способам использования документные атрибуты можно разделить на три группы.

1.2.2. Поисковые зоны и атрибуты

Каждый документ имеет внутреннюю структуру - деление на параграфы, абзацы, заголовки и т.п. Например, формат электронного письма подразумевает наличие в нем полей from, to, служебных областей, поля сообщения и т.п. Документы принятого в интернете формата HTML также имеют внутреннюю структуру - заголовок, тело документа, ключевые слова. В теле могут присутствовать заголовки различных уровней, ссылки, картинки и т.д. Различные части структурированых таким образом документов будем называть зонами.

Каждая зона может иметь одно или несколько скрытых свойств, не связанных непосредственно с ее текстом. Например, зона to в электронном письме могла бы иметь свойство количество адресов рассылки, а зона ссылка на другой документ в HTML-документе имеет свойство URL документа. Такие свойства зон будем называть зонными атрибутами.

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

Документ размечается на зоны во время индексирования, в соответствии с метками, возвращаемыми парсером. Каждая зона получает уникальное имя (текстовую строку), используемое в языке запросов, и может быть предметом поиска независимо от других зон. Мы будем называть эти размеченные области документа поисковыми зонами. Каждая поисковая зона имеет точки начала и конца в теле документа. Начало и конец зон всегда приходятся на границы слов. Разные зоны могут быть вложены друг в друга.

Зонные атрибуты также могут быть помечены в качестве независимых объектов поиска. Такие атрибуты будем называть зонными поисковыми атрибутами, или просто атрибутами. Каждый атрибут имеет уникальное имя (текстовую строку), и значение, которое может быть различного типа, в зависимости от способа его обработки при индексировании. Зона, в общем случае, может иметь произвольное число атрибутов. Каждый атрибут может иметь несколько различных значений. Разумеется, не все атрибуты, определенные в данном массиве документов, должны быть определены для данной зоны. Язык запросов Яндекса позволяет искать в нужной зоне с нужным значением атрибута. Значения атрибутов назначаются зонам во время индексирования, в соответствии с метками, возвращаемыми парсером, и хранятся в том же индексном файле, что и слова, встречающиеся в документе.

Существуют два важных частных случая зон - документ как целое и зона нулевой длины. Атрибуты документа как целого называются поисковыми документными атрибутами. Примерами документных атрибутов являются его автор или дата создания. Поиск по таким атрибутам является важным частным случаем зонно-атрибутивного поиска.

Зона нулевой длины введена для того, чтобы иметь возможность назначить атрибуты определенной точке внутри документа. Это может быть полезным в случае, когда документ имеет "вложенные потоки", отличающиеся форматом или медиа-типом и не индексируемые с помощью основного парсера. Например, у картинок в HTML-документе может быть всплывающий сверху текст - параметр alt тега <img>. Этот текст - свойство (атрибут) точки документа, в которой расположена картинка.

1.2.3. Типы поисковых атрибутов

По способам распознавания и обработки различаются следующие типы атрибутов:

Пример 1-3. Типы поисковых атрибутов

Некоторый документ имеет атрибут abstract типа TEXT со значением "A general formula is derived for the main gravitomagnetic clock effect in the case of slow motion along an arbitrary elliptical orbit in the exterior field of a slowly rotating mass", атрибут field типа LITERAL со значением "General Relativity and Quantum Cosmology" , атрибут publication_date типа DATE со значением "12 Oct 2001 00:00:02 GMT" и атрибут gr-qc типа LITERAL со значением 0110055, идентифицирующий этот документ в международной базе научных публикаций xxx.lanl.gov.

1.2.4. Конфигурирование поисковых зон и атрибутов

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

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

Для парсера формата HTML по умолчанию поисковыми атрибутами считаются все пары имя/значение перечисленные в HTML тэгах <META NAME="имя" CONTENT="значение">. Кроме того, если в конфигурации коллекции документов присутствуют директивы Groups или DocProperty, то также будут созданы соответствующие группировочные атрибуты и их значения будут сохранены в документном архиве.

Пример 1-4. Конфигурирование поисковых атрибутов

  Пусть индексируемые докуменьы имеют форма HTML и имеют тэг:
  <META NAME="attr" CONTENT="value">
  
  Тогда в процессе индексирования будет создан поисковый атрибут с именем attr.
  При задании директивы
  
  Groups : attr
  
  будут создан также группировочный атрибут с таким же именем, а при задании директивы
  
  DocProperty : attr
  
  значение атрибута value будет сохранено в документном архиве.
  

Особые названия зон и атрибутов. Ряд поисковых документных атрибутов попадают в индекс независимо от настроек парсеров и не требуют никаких действий по их описанию. К таким атрибутам относятся дата последнего изменения файла с документом (date), дата последнего переиндексирования документа (idate), медиатип документа (mime) и некоторые другие.

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

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

1.2.5. Сортировка и группировка найденных документов

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

Имеется возможность не только по-разному сортировать список найденных документов, но и структурировать, т.е. группировать этот список по значению атрибута, что делает результат поиска более обозримым и осмысленным. При группировке по атрибуту создается несколько множеств, называемых группами, состоящих из найденных документов. Каждая группа соответствует одному конкретному значению данного атрибута. Группы могут пересекаться, то есть если документ имеет несколько значений атрибута, он попадёт в несколько соответствующих групп. Заметим, что группировка по значениям атрибута, как правило, является осмысленной в случае, когда количество значений атрибута невелико по сравнению с количеством документов.

После выполнения группировки полученные группы сортируются либо по убыванию релевантности, либо по значению некоторого группировочного атрибута, который может отличаться от атрибута, по которому проведена группировка. При сортировке по релевантности, релевантность группы определяется особым алгоритмом, принимающим во внимание релевантности документов, входящих в эту группу. При сортировке по значению атрибута, его значение для группы определяется максимумом значения атрибута среди всех документов группы (при сортировке по убыванию), либо его минимумом (при сортировке по возрастанию). Если для одного документа имеется несколько значений атрибута, то будет использовано одно из них: минимальное или максимальное - в зависимости от "направления" сортировки.

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

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

Пример. Результаты поиска по интернету на www.yandex.ru сгруппированы по хостам и по категориям интернет-каталога. Так как документов в интернете примерно на три порядка больше, чем хостов, группировка по хостам значительно увеличивает качество и юзабилити поиска. Структурирование результата поиска по категориям интернет-каталога помогает снимать неоднозначность ответа при неточно сформулированном запросе.

1.2.6. Типы группировок

Значения группировочных атрибутов могут образовывать древовидную иерархию. Иерархией будем называть отношение ребёнок > родитель, заданное на множестве значений данного атрибута и отображающее его в себя, такое, что если некоторому документу соответствует значение ребёнок данного атрибута, то ему также соответствует значение родитель. При этом имеется выделенное значение "корня", обязательно равное 0, не имеющее родителя. Группировочные атрибуты, для которых задана иерархия, будем называть иерархическими.

Группировка по одному атрибуту может быть осуществлена одним из 3-х способов.

Пустая

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

Плоская

Группировка, при которой создаются несколько несвязных групп. Каждый документ может попасть в одну или несколько таких групп. Используется для неиерархических атрибутов.

Иерархическая

Группировка, в которой группы документов образуют иерархию в соответствии со значениями иерархического атрибута. Иерархическая группировка, в свою очередь, бывает двух типов:

широкая

Документы попадают в группы, находящиеся на один уровень ниже наперёд заданной группы, которую далее будем называть текущей группой.

глубокая

Документы попадают на самый нижний уровень, лежащий под текущей группой (в листовые группы).

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

Пример 1-5. Построение иерархического атрибута

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

  Каталог (0)
      Развлечения и отдых (1)
          Спорт (3)
              Горные лыжи (8)
              Плавание (9)
          Знакомства (4)
          Путешествия (5)
              Туры (10)
              Отели (11)
              Билеты (12)
                  Авиа (13)
                  Ж/д (14)
      Компьютеры (2)
          Hardware (6)
          Software (7)

Пусть текущая группа - Развлечения и отдых. Тогда широкая группировка разложит документы по трём группам: Спорт, Знакомства, Путешествия, а глубокая группировка - по семи группам: Горные лыжи, Плавание, Знакомства, Туры, Отели, Авиа, Ж/д.

Пусть теперь текущей группой будет корень каталога (Каталог) Тогда широкая группировка возвращает две группы: Развлечения и отдых и Компьютеры, а глубокая группировка - Горные лыжи, Плавание, Знакомства, Туры, Отели, Авиа, Ж/д, Hardware, Software.

1.2.7. База группировочных атрибутов

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

indexaof, indexatr

Основные файлы базы группировочных атрибутов. Во время индексирования могут быть созданы из поисковых атрибутов, имена которых перечислены в директиве Groups конфигурации индексатора.

Пример 1-6. Пример группировочного атрибута

Будем считать, что иерархия из примера Построение иерархического атрибута соответствует группировочному атрибуту с именем category, и все индексируемые документы имеют формат HTML и содержат тег

  <META NAME="category" CONTENT="значение">
где "значение" - одно из целых чисел, указанных в примере. В конфигурации индексатора укажем директиву
  Groups: category
Это означает, что документный атрибут category, определенный парсером при индексировании документа, будет преобразован в одноименный группировочный атрибут, который будет сохранен в базе группировочных атрибутов.

Пример 1-7. Пример поискового/группировочного атрибута

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

  <IndexedArea>
      HttpPrefix http://www.site1.ru/
      Options: set host=site1
  </IndexedArea>
  
  <IndexedArea>
      HttpPrefix http://www.site2.ru/
      Options: set host=site2
  </IndexedArea>
Для каждого сайта указана начальная страница для обхода по ссылкам и литеральный поисковый атрибут с именем host и произвольным значением, идентифицирующим сайт. Для преобразования этих значений в группировочные атрибуты укажем в конфигурации индексатора директиву
  Groups: host
с тем же именем атрибута. В данном примере может использоваться конфигурация парсера по умолчанию, так как значения атрибутов определяются в конфигурации индексатора, а не в теле документов. В результате работы индексатора с указанной конфигурацией поисковый атрибут host будет сохранен в индексе в формате, позволяющем находить все документы с данного сайта с помощью запросов вида #host="site1". Одновременно будут автоматически созданы целочисленные значения группировочного атрибута host, которые будут сохранены в базе группировочных атрибутов, что позволит группировать документы по сайтам. Кроме того, будет создан файл соответствия имен host.c2n следующего содержания
  	1 site1
  	2 site2

имя_атрибута.c2n

В некоторых случаях значения группировочных атрибутов, представленные целыми числами, бессмысленны с точки зрения пользователя поискового сервиса. В этом случае в результатах поиска требуется показать в качестве значений атрибутов некоторые строки-идентификаторы. Соответствие между значением атрибута и строковым идентификатором этого значения задается в файле с расширением c2n, имя которого совпадает с именем атрибута. Для каждого атрибута создаётся отдельный файл. Каждая строка указанного файла задает одно соответствие. Эта строка имеет формат

  (целое число, значение атрибута)(символ табуляции)(текстовая_строка)(символ перевода строки)

Если для значений атрибута не предусмотрено соответствия текстовым строкам, то c2n-файл для этого атрибута отсутствует.

В XML-представлении результатов поиска они указываются в атрибуте attr элемента categ.

Пример 1-8. Пример attr.c2n

Для иерархии из примера Построение иерархического атрибута c2n-файл имеет вид

  1 Развлечения и отдых
  2 Компьютеры
  3 Спорт
  4 Знакомства
  5 Путешествия
  6 Hardware
  7 Software
  8 Горные лыжи
  9 Плавание
  10 Туры
  11 Отели
  12 Билеты
  13 Авиа
  14 Ж/д

имя_атрибута.c2p

Файлы c2p используются только для иерархических атрибутов и состоят из строк формата:

  (целое число, значение "ребенок")(символ табуляции)(целое число, значение "родитель")(символ перевода строки)
Каждая строка задает одно иерархическое соответствие ребёнок > родитель. Для каждого атрибута создаётся отдельный файл.

Если атрибут не является иерархическим, то c2p-файл для него отсутствует.

В XML-представлении результатов поиска иерархия атрибутов для данного документа представлена в виде вложенных элементов categ.

Пример 1-9. Пример attr.c2p

Для иерархии из примера Построение иерархического атрибута c2p-файл имеет вид

  1 0
  2 0
  3 1
  4 1
  5 1
  6 2
  7 2
  8 3
  9 3
  10 5
  11 5
  12 5
  13 12
  14 12

Все описанные файлы должны находиться в той же директории, что и основные индексные файлы.

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

Максимальное число группировочных атрибутов равно 255.

1.2.8. Сравнение поисковых и группировочных атрибутов

Поисковые атрибутыГруппировочные атрибуты
Используются для поиска документов. Имена атрибутов используются в языке запросов.Используются для сортировки и группировки найденных документов. Имена атрибутов используются в полях поисковой формы, формирующей параметры запроса, или в атрибутах элементов XML-представления результатов поиска.
Значения атрибутов сопоставляются с документом при его индексировании. Они либо извлекаются из текста документа в течение индексирования, либо назначаются дополнительно перед окончанием индексирования документа.Значения атрибутов сопоставляются с документом независимо от индексирования и могут быть изменены без переиндексирования. Тем не менее, они также могут быть извлечены из текста документа при индексировании.
Значения атрибутов могут быть последовательностью слов, обрабатываемых с учетом или без учета морфологии, произвольными строками, числами или датами.Значения атрибутов могут быть только целыми числами. Для удобства конечных пользователей каждому из этих числовых значений может быть сопоставлено строковое имя.
Документ может иметь несколько независимых значений данного атрибута.Документ может иметь несколько значений данного атрибута, которые могут быть независимыми или образовывать иерархию.
Значения атрибутов хранятся в том же индексном файле, что и слова, встречающиеся в документе.Значения атрибутов хранятся в специальном дополнительном файле.

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