ВебмастерМетрикаВиджетыРекламная сетьДиректПоиск для сайтаAPI
Войти

Руководство по установке и эксплуатации

В формате PDF

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

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

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

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

Пример

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

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

  • Поисковые атрибуты. Используются для поиска документов. Имена атрибутов используются в языке запросов. Поисковые документные атрибуты являются частным случаем зонных атрибутов и подробно рассмотрены ниже в разделе Поисковые зоны и атрибуты.
  • Группировочные атрибуты. Используются для сортировки и группировки найденных документов. Имена атрибутов используются в полях поисковой формы запроса.
  • Свойства документа. Используются для отображения на странице с результатами поиска. Имена атрибутов используются в аргументе функции DocProperty.

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

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

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

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

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

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

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

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

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

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

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

  • Значение атрибута распознается как текст, состоящий из последовательности слов, каждое слово обрабатывается с учетом морфологии и участвует по отдельности в индексировании и поиске. Такие атрибуты будут называться атрибутами типа TEXT.
  • Значение атрибута распознается как неделимая последовательность символов, участвующая в индексировании и поиске как единое целое. Правила морфологии к такой последовательности не применяются. Такие атрибуты будут называться атрибутами типа LITERAL. Для данного типа атрибутов возможен поиск в интервале значений, с учетом лексикографического сравнения.
  • Значение атрибута распознается как дата или время. Такие атрибуты будут называться атрибутами типа DATE.
  • Значение атрибута распознается как "Uniform Resource Locator". Такие атрибуты будут называться атрибутами типа URL.

Пример

Некоторый документ имеет атрибут 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.

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

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

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

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

Пример

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

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

Особые названия зон и атрибутов

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

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

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

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

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

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

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

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

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

Пример

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

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

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

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

Пустая

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

Плоская

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

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

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

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

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

Пример

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

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

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

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

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

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

indexaof, indexatr

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

Чтобы использовать в качестве группировочного атрибут типа DATE, он должен быть распознан с помощью parse_data_integer. После этого в группировках и сортировках будет использовано целое число, которое показывает количество секунд, прошедших после 1 января 1970 года.

Пример

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

<META NAME="category" CONTENT="значение">

где "значение" - одно из целых чисел, указанных в примере.

В конфигурации HTML-парсера укажем:

<Attributes>
    ...
    category : TEXT,doc,,ignore/meta.category
</Attributes>

Это означает, что значение meta-тега с именем category будет распознано парсером как документный атрибут с именем category. Значение этого атрибута станет известно в результате индексирования документа, но не будет сохранено в основном индексном файле (из-за наличия аргумента ignore). Аргумент ignore позволяет уменьшить размер индексного файла за счет атрибутов, которые не нужны в языке запросов.

В конфигурации индексатора укажем директиву:

Groups : category

Это означает, что документный атрибут category, определенный парсером при индексировании документа, будет преобразован в одноименный группировочный атрибут, который будет сохранен в базе группировочных атрибутов.

Пример

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

<META NAME="pub_date_group" CONTENT="19970127">

<META NAME="pub_date_search" CONTENT="значение">

где "значение" - дата в одном из следующих форматов:

19970127T142435 или
Mon, 27 Jan 1997 14:24:35 или
Mon Jan 27 14:24:35 1997 или
Monday, 27-Jan-97 14:24:35

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

В конфигурации HTML-парсера укажем:

<Attributes>
    ...
    pd : LITERAL,doc,parse_data_integer,ignore/meta.pub_date_group
    pdat : DATE,doc,parse_http_expires/meta.pub_date_search
</Attributes>

В конфигурации индексатора укажем:

Groups : pd

Поисковый атрибут pdat будет сохранен в индексе в формате, позволяющем задавать поисковые запросы вида #pdat>="19990614". Группировочный атрибут pd будет сохранен в базе группировочных атрибутов, что позволит сортировать документы по дате принятия.

Пример

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

Рассмотрим случай двух сайтов. В конфигурации индексатора определим две секции, описывающие индексирование каждого сайта:

<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-файл для этого атрибута отсутствует.

Заданные в c2n-файле имена значений могут быть получены при формировании страниц с результатами поиска на C++ и Perl с помощью функции CategName.

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

Пример

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

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

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

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

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

Каждая строка задает одно иерархическое соответствие ребёнокродитель. Для каждого атрибута создаётся отдельный файл.

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

Заданные в c2p-файле значения могут быть получены при формировании страниц с результатами поиска на C++ и Perl с помощью функции CategParent.

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

Пример

Для иерархии из примера Построение иерархического атрибута 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.

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

Поисковые атрибуты Группировочные атрибуты

Используются для поиска документов.

Имена атрибутов используются в языке запросов.

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

Имена атрибутов используются в полях поисковой формы, формирующей параметры запроса, и в аргументах функций, используемых при формировании страниц с результатами поиска на C++ и Perl, или в атрибутах элементов XML-представления результатов поиска.

Значения атрибутов сопоставляются с документом при его индексировании. Они либо извлекаются из текста документа в течение индексирования, либо назначаются дополнительно перед окончанием индексирования документа. Значения атрибутов сопоставляются с документом независимо от индексирования и могут быть изменены без переиндексирования. Тем не менее, они также могут быть извлечены из текста документа при индексировании.
Значения атрибутов могут быть последовательностью слов, обрабатываемых с учетом или без учета морфологии, произвольными строками, числами или датами.

Значения атрибутов могут быть только целыми числами.

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

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