НАЧАЛО >> Оглавление >> Общее описание >> Структура файлов БД ИРБИС64 >> Структура инверсного файла (*.ifp, *.l01, *.n01) и форматы записей >> Формат файла IFP
Файл содержит список ссылок для каждого термина словаря. Список ссылок может быть представлен в 2-х различных форматах. Выбор формата размещения ссылок осуществляется при загрузке словаря из файла Lk1 (этот файл формируется после отбора и сортировки терминов) в зависимости от общего числа ссылок для данного термина. Обыкновенный формат – это заголовок блока и набор упорядоченных ссылок. По превышении определенного числа ссылок (MIN_POSTINGS_IN_BLOCK - в данной реализации 256) формат включает специальный блок и набор блоков обыкновенного формата размер которых определяется по следующей схеме:
блоки 4, 8, 16, 32 Kb для общего числа ссылок соответственно 256-32000; 32000-64000; 64000-128000; 128000 и более.
Такая схема оптимизирует работу с диском в процессе инвертирования записи в базах данных, характеризующихся большим количеством ссылок на термин.
Запись состоит из заголовка и упорядоченного набора ссылок.
Ссылка имеет следующий формат:
| Число бит | Параметр |
|---|---|
| 32 | PMFN – номер записи; |
| 32 | PTAG – идентификатор поля назначенный при отборе терминов в словарь; |
| 32 | POCC – номер повторения; |
| 32 | PCNT – номер термина в поле. |
Заголовок имеет следующий формат:
| Число бит | Параметр |
|---|---|
| 32 | LOW – младшее слово смещения на следующую запись (если нет 0); |
| 32 | HIGH – старшее слово смещения на следующую запись (если нет 0); |
| 32 | TOTP – общее число ссылок для данного термина (только в первой записи); число ссылок в данном блоке (в следующих записях); |
| 32 | SEGP - число ссылок в данном блоке; |
| 32 | SEGC – вместимость записи в ссылках. |
Признак последнего блока – LOW=HIGH= -1
В этом случае первой записью является специальный блок, который представляет собой заголовок (обыкновенного формата), в котором смещения имеют специальные значения = -1001, и набор входов следующего формата:
| Число бит | Параметр |
|---|---|
| 32 | POSTING – 1-я ссылка из записи обыкновенного формата; |
| 32 | LOW – младшее слово смещения на следующую запись (если нет 0); |
| 32 | HIGH – младшее слово смещения на следующую запись (если нет 0); |
Число входов кратно 4. Записи, на которые ссылается специальный блок связаны между собой как описано выше. Причем общее количество ссылок для данного термина сохраняется только в специальном блоке.
При выполнении актуализации инверсного файла могут создаваться новые дополнительные записи при добавлении новых ссылок. В этом случае создается новая запись размером равным общему количеству ссылок, если нет специального блока, и размером, равным количеству ссылок в данной записи, если есть. Новая запись создается таким образом, чтобы не нарушалась возрастающая последовательность следования ссылок. Новая запись связывается с существующими через поле NXT_, ссылки распределяются равномерно между старой и новой записью.