Инвертированные индексы
Факт, что в документальных БД поиск обычно проводится по многим ключам доступа, означает, что с точки зрения системы хранение записей в последовательности, определенной единичным ключом доступа, непрактично. Вообще на процессы поиска и выдачи последовательность записей в файле не оказывает большого влияния. Определенная последовательность может быть важна для пользователя только при выводе (например, выданные записи должны быть выведены в алфавитном порядке по автору). Это делается функцией сортировки при генерировании выдачи или отчета.
Программное обеспечение для документальных БД обычно содержит записи в том порядке, в котором они добавляются в файл. Таким образом, пополнение файла происходит по мере добавления новых записей в конец файла. Такой файл называется последовательным, или линейным.
Ниже приводятся две записи из линейного файла библиографической БД:
AN | |
TI | The Three Little Pigs |
AU | Mother Goose |
PU | Wee Press |
CY | London |
PY | |
AB | Real-life testing of house construction methods Demonstrates advantages and disadvantages of straw, sticks, and bricks |
DE | Swine, Miniature, Residential Auhitecture |
ID | Wolf, Big Bad |
AN | |
TI | The House That Jack Built |
AU | Mother Goose PU Children's Book Company Inc. |
CY | New York |
PY | |
AB | Construction tips for novices. Describes occupants of Jack's house. |
DE | Residential Architecture; Animals in fiction |
ID | Jack |
Если БД содержит небольшое количество записей, поиск в БД может проводиться путем поочередного перебора значений в каждом поле и в каждой записи во всем массиве линейного файла. Например, чтобы найти записи, содержащие термин „construction", система начнет поиск с номера записи 001. Начиная с первого поля (AN - номер доступа) компьютер будет по очереди перебирать каждый символ, пока не найдет в поле „реферат" (АВ) набор знаков, составляющих слово CONSTRUCTION. Система доложит пользователю, что данная запись содержит искомое слово. В зависимости от используемого программного обеспечения система затем или немедленно выдаст на экран найденную запись, или запомнит ее для выдачи всего списка найденных записей после окончания поиска, а пока продолжит последовательный поиск в линейном файле. Как видно, такой подход несколько непрактичен. Использование логических комбинаций (например, CONSTRUCTION and TESTING) еще более увеличит временные затраты на поиск.
Для ускорения процесса выдачи и предоставления более обширных поисковых функций практически все информационно-поисковые системы сегодня используют инвертированную индексацию. Инвертированные индексы (также называемые словарными файлами) представляют собой список выбранных из линейного файла поисковых слов или фраз, помещенный в отдельный, организованный в алфавитном порядке файл, со ссылками на определенную часть записи в линейном файле. Ниже приводится пример инвертированного файла, который поддерживает доступ к отдельным элементам данных.
ЭЛЕМЕНТ» | ЗАПИСЬ | ПОЛЕ | ПОЗИЦИЯ ДАННЫХ |
PV | |||
РУ | |||
advantages | ab | ||
animals | dc | ||
animals in fiction | dc | 03-05 | |
architecture | dc | ||
dc | |||
bad | id | ||
big | id | ||
bricks | ab | ||
built | ti | ||
construction | ab | ||
ab |