Яndex.Server 3.1 ДОКУМЕНТАЦИЯ

       

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


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

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

indexaof, indexatr

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

Пример 1. Будем считать, что иерархия из примера Построение иерархического атрибута соответствует группировочному атрибуту с именем cat, и все индексируемые документы имеют формат HTML и содержат тег <META NAME="category" CONTENT="значение"> где "значение" - одно из целых чисел, указанных в примере. В конфигурации HTML-парсера укажем <Attributes> ... cat = TEXT,doc,,ignore/meta.category </Attributes> Это означает, что значение meta-тега с именем category будет распознано парсером как документный атрибут с именем cat. Значение этого атрибута станет известно в результате индексирования документа, но не будет сохранено в основном индексном файле (из-за наличия аргумента ignore). Аргумент ignore позволяет уменьшить размер индексного файла за счет атрибутов, которые не нужны в языке запросов. В конфигурации индексатора укажем директиву Groups: cat Это означает, что документный атрибут cat, определенный парсером при индексировании документа, будет преобразован в одноименный группировочный атрибут, который будет сохранен в базе группировочных атрибутов.


Пример 2. Пусть индексируемые документы являются законодательными актами в формате HTML. Каждому документу соответствует дата его принятия законодателем, по которой требуется искать и сортировать документы. По умолчанию поддерживается поиск и сортировка по дате последнего изменения файла на диске, которая не совпадает с нужной датой. Поэтому сохраняем дату принятия законодателем в следующих meta-тегах: <META NAME="pub_date_search" CONTENT="значение"> <META NAME="pub_date_group" 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> ... pdat=DATE,doc,parse_http_expires/meta.pub_date_search pd=DATE,doc,parse_data_integer,ignore/meta.pub_date_group </Attributes> В конфигурации индексатора укажем Groups: pd Поисковый атрибут pdat будет сохранен в индексе в формате, позволяющем задавать поисковые запросы вида #pdat>="19990614". Группировочный атрибут pd будет сохранен в базе группировочных атрибутов, что позволит сортировать документы по дате принятия.
имя_атрибута.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
Все описанные файлы должны находиться в той же директории, что и основные индексные файлы.
Техническое замечание. С точки зрения эффективности реализации желательно, чтобы диапазон значений группировочных атрибутов был как можно более "компактен" и его нижняя граница была недалека от нулевого значения.
Максимальное число группировочных атрибутов равно 20. Максимальное число уровней в иерархии данного атрибута равно 10. Максимальное число значений данного атрибута, которое может иметь документ, равно 20 (без учета верхних уровней возможной иерархии).

Содержание раздела