Введение

Тип индекса базы данных
В информатике инвертированный индекс (также называемый списком соответствий, файлом соответствий или инвертированным файлом) — это индекс базы данных, хранящий соответствие между содержимым, таким как слова или числа, и его местоположениями в таблице, документе или наборе документов (в отличие от прямого индекса, который отображает документы в содержимое). Цель инвертированного индекса — обеспечить быстрый полнотекстовый поиск, но при этом требуется дополнительная обработка при добавлении документа в базу данных. Инвертированный файл может являться самим файлом базы данных, а не только её индексом. Это наиболее распространенная структура данных, используемая в системах поиска документов, широко применяемая, например, в поисковых системах. Кроме того, несколько значительных универсальных систем управления базами данных, работающих на основе мейнфреймов, использовали архитектуры инвертированных списков, включая ADABAS, DATACOM/DB и Model 204. Существуют два основных варианта инвертированных индексов: инвертированный индекс уровня записей (или инвертированный индекс файла, или просто инвертированный файл) содержит список ссылок на документы для каждого слова. Инвертированный индекс уровня слов (или полный инвертированный индекс, или инвертированный список) дополнительно содержит позиции каждого слова внутри документа. Последний вариант предоставляет больше функциональности (например, поиск фраз), но требует больше вычислительных ресурсов и места для создания.

Приложения

Инвертированная структура данных индекса является центральным компонентом типичного алгоритма индексации поисковой системы. Целью реализации поисковой системы является оптимизация скорости запроса: найти документы, содержащие слово X. После разработки прямого индекса, который хранит списки слов для каждого документа, он инвертируется для создания инвертированного индекса. Запрос к прямому индексу потребовал бы последовательной итерации по каждому документу и каждому слову для проверки соответствия. Время, память и вычислительные ресурсы, необходимые для выполнения такого запроса, не всегда технически осуществимы. Вместо перечисления слов для каждого документа в прямом индексе, разрабатывается инвертированная структура данных индекса, которая перечисляет документы для каждого слова. С созданным инвертированным индексом запрос может быть выполнен путем перехода к идентификатору слова (через произвольный доступ) в инвертированном индексе. В докомпьютерную эпоху конкордансы к важным книгам составлялись вручную. По сути, это были инвертированные индексы с небольшим количеством сопроводительных комментариев, создание которых требовало огромных усилий. В биоинформатике инвертированные индексы играют важную роль в сборке последовательности коротких фрагментов секвенированной ДНК. Один из способов найти источник фрагмента — выполнить поиск по нему относительно референсной последовательности ДНК. Небольшое количество несовпадений (из-за различий между секвенированной ДНК и референсной ДНК или ошибок) можно учесть, разбив фрагмент на более мелкие подфрагменты — по крайней мере один подфрагмент, вероятно, совпадет с референсной последовательностью ДНК. Для сопоставления требуется построить инвертированный индекс всех подстрок определенной длины из референсной последовательности ДНК. Поскольку человеческая ДНК содержит более 3 миллиардов пар оснований, и нам необходимо хранить подстроку ДНК для каждого индекса и 32-битное целое число для самого индекса, объем хранилища для такого инвертированного индекса, вероятно, составит десятки гигабайт.

Сжатие

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