Насколько я понимаю, хэш/инвертированный индекс сопоставляет значения/слова с записями/документами соответственно. Однако сложность вставки в хэш-индекс невелика (поскольку он добавляет новую корзину в случае переполнения), но больше в инвертированном индексе (из-за сохранения отсортированного списка идентификаторов документов). Означает ли это, что они по сути одинаковы, за исключением реализации?
хэш-индекс против инвертированного индекса
Ответы (2)
Насколько я понимаю, хэш-индекс используется для совершенно другого варианта использования/сценария по сравнению с инвертированным индексом. Хэш-индекс — это просто сопоставление ключа индекса с точным расположением данной строки в памяти (в основном используется для оптимизированных для памяти таблиц в реляционных базах данных), тогда как инвертированный индекс — это фактически сопоставление слова с документами, в которых оно находится. содержится.
Итак, если мы посмотрим на это, слово может содержаться в нескольких документах, и документы будут общими для многих таких слов. Следовательно, многие ключи в случае инвертированного индекса указывают на идентификаторы документов, которые являются общими для многих таких ключей, тогда как в случае хэш-индекса данные, на которые указывают ключи, то есть данные строки, могут быть совершенно не связаны друг с другом.
Таким образом, они не совпадают, поскольку относятся к совершенно не связанным сценариям и реализуются совершенно по-разному.
Для получения дополнительной информации об инвертированном индексе вы можете обратиться к сообщению здесь: BigData: инвертированный индекс
Инвертированный индекс — это структура данных, которая сопоставляет содержимое (например, маркеры) с их расположением в документах. Основное преимущество инвертированного индекса заключается в том, что для поиска интересных документов не нужно просматривать всю коллекцию данных.
Рассмотрим книгу. Индекс в конце является примером инвертированного индекса. Но это не хэш-индекс.
Хэш-индекс — это инвертированный индекс, реализованный с использованием хеш-таблицы. Это изображение показывает, как они хранят данные:
Для реализации инвертированных индексов можно использовать и другие структуры данных, например деревья. Двоичные деревья можно использовать, но они часто слишком упрощены, поэтому вместо них используются rb-деревья или b-деревья. Индексы на основе дерева немного сложнее понять, поэтому изображения не очень помогают. У них есть свойства, которые делают их более предпочтительными, чем индексы на основе хэшей, когда у вас есть большие объемы данных, например, их легче обновлять и они имеют лучшую производительность в худшем случае.