stringtranslate.com

Перевернутый индекс

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

Существует два основных варианта инвертированных индексов: инвертированный индекс на уровне записи (или инвертированный файловый индекс или просто инвертированный файл ) содержит список ссылок на документы для каждого слова. Инвертированный индекс на уровне слова (или полный инвертированный индекс или инвертированный список ) дополнительно содержит позиции каждого слова в документе. [4] Последняя форма предлагает больше функциональности (например, поиск по фразам ), но требует больше вычислительной мощности и места для создания.

Приложения

Структура данных инвертированного индекса является центральным компонентом типичного алгоритма индексации поисковой системы . [5] Целью реализации поисковой системы является оптимизация скорости запроса: поиск документов, в которых встречается слово X. [6] После разработки прямого индекса , который хранит списки слов на документ, он затем инвертируется для разработки инвертированного индекса. Запрос прямого индекса потребует последовательной итерации по каждому документу и к каждому слову для проверки соответствующего документа. Время, память и ресурсы обработки для выполнения такого запроса не всегда технически реалистичны. Вместо того, чтобы перечислять слова на документ в прямом индексе, разрабатывается структура данных инвертированного индекса, которая перечисляет документы на слово.

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

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

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

Сжатие

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

Смотрите также

Ссылки

  1. ^ Кнут, Д. Э. (1997) [1973]. "6.5. Поиск по вторичным ключам". Искусство программирования (третье изд.). Reading, Massachusetts : Addison-Wesley . ISBN 0-201-89685-0.
  2. ^ Salton, Gerard; Fox, Edward A.; Wu, Harry (ноябрь 1983 г.). «Расширенный поиск булевой информации». Communications of the ACM . 26 (11): 1022–1036. doi :10.1145/182.358466. hdl : 1813/6351 .
  3. ^ Зобель, Джастин; Моффат, Алистер; Рамамоханарао, Котагири (декабрь 1998 г.). «Инвертированные файлы против файлов сигнатур для индексации текста». ACM Transactions on Database Systems . 23 (4). Нью-Йорк: Ассоциация вычислительной техники : 453–490. doi : 10.1145/296854.277632 . S2CID  7293918.
  4. ^ Баеза-Йетс, Рикардо ; Рибейро-Нето, Бертье (1999). Современный информационный поиск . Рединг, Массачусетс : Addison-Wesley Longman. стр. 192. ISBN 0-201-39829-X.
  5. ^ Зобель, Джастин; Моффат, Алистер (июль 2006 г.). «Инвертированные файлы для текстовых поисковых систем». ACM Computing Surveys . 38 (2). Нью-Йорк: Ассоциация вычислительной техники : 6. doi : 10.1145/1132956.1132959. S2CID  207158957.
  6. ^ Информационный поиск: внедрение и оценка поисковых систем. Кембридж, Массачусетс: MIT Press. 2010. ISBN 978-0-262-02651-2. Архивировано из оригинала 2020-10-05 . Получено 2010-08-08 .
  7. ^ Ван, Цзяньго; Линь, Чуньбин; Папаконстантину, Яннис; Свенсон, Стивен (9 мая 2017 г.). «Экспериментальное исследование сжатия битовых карт против сжатия инвертированных списков». Труды Международной конференции ACM 2017 года по управлению данными . Ассоциация вычислительной техники. стр. 993–1008. doi :10.1145/3035918.3064007 . Получено 1 мая 2023 г.

Внешние ссылки