6.2. Категории

Существует редактор категорий, написаный на perl. Вы можете взять его в директории perl/cat_ed/.

Категории похожи на тэги, но обладают свойством вложенности. Т.е. вы можете иметь некоторую категорию внутри другой категории.

Основные моменты:

Также можно установить ссылку, т.е категорию, ссылающуюся на другую категорию. Для этого предназначено поле link в базе данных. В ссылке последние два символа должны быть @@. В примере выше Moto->BMW - ссылка на Auto->BMW.

Категории могут разделяться на подкатегории произвольным образом, но для того, чтобы с ними можно было работать редактором категорий, необходимо использовать по два символа на каждый уровень. Если вы используете редактор категорий, вы можете выбрать для использования 16-ричные цифры 0-F или 36-ричные 0-Z. Поэтому категория верхнего уровня 'Auto' будет обозначена 01. Если она будет иметь подкатегорию 'Ford', то мы получим 01 для верхней категории и 01 мы присвоим для 'Ford', сложим вместе и получим 0101. Если 'Auto' имеет еще одну подкатегорию, например, 'VW', её мы обозначили бы 02, т.к. 01 уже присвоено подкатегории 'Ford', т.е. в результате получим 0102. Если 'VW' имеет подкатегорию 'Engine', опять начнем с кода 01, а в результате получим 010201: 01 - 'Auto', 02 - 'VW', 01 - 'Engine'

Если вы хотите искать только среди сайтов этой категории, неободимо передать эту категорию в качестве параметра cat=010201 в URL...т.е. создайте раскладушку такого типа:

<OPTION value="01">AUTO
<OPTION value="0101">Ford

и т.д....

Замечание: Для способа хранения cache вам нужно указать секцию category в вашем файле sections.conf с ненулевой максимальной длиной:

Section category 0 32 single

6.2.1. Команда Category

Category <string>

Вы можете помечать документы при помощи вложеный категорий. Категория - строка шестнадцатиричных цмфр. Вы можете иметь до 6 уровней вложенности по 256 элементов на каждом уровне. Пустая категоря означает корень дерева категорий. См. Разд. 6.2> для дальнейшего описания.

# This command means a category on first level:
Category AA
# This command meand a category on 5th level:
Category FFAABBCCDD

6.2.2. Команда CategoryIf

CategoryIf <category> [Match|NoMatch] [NoCase|Case] [String|Regex] [loose] <section> <arg> [<arg> ... ]

Присвоить документу категорию <category>, если значение секции section подпадает под указаный шаблон arg. Значение первых трёх необязательных параметров такое же как для команды Allow (см. Разд. 3.10.14>). Необязательный параметр loose используется для задания более низкого приоритета такому присвоению категории, т.е. если категория уже была присвоена на основании параметров сервера, новое значение категории присвоено не будет.

Пример

CategoryIf 010F regex Title "JOB ID"

6.2.3. Загрузка таблицы категорий

Когда задана команда

CategoryTable mysql://user:pass@host/dbname/tablename[?charset=CHARSET]
indexer будет загружать информацию о категориях из указаной SQL-таблицы tablename. См. структуру этой таблицы в файле create/mysql/create.txt. Если для вашей базы данных нет соответсвующего скрипта со структурой этой таблицы, возьмите этот файл в качестве образца.

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

6.2.4. Команда FlushCategoryTable

Эта команда очищает содержимое таблицы categories. Используйте эту команду для удалений устаревших данных перед загрузкой новых при помощи команды CategoryTable.