Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Moscow Python Meetup №107. Суперсжатые полнотек...

Moscow Python Meetup №107. Суперсжатые полнотекстовые индексы

Мария Рубаненко (Fintech AI, Tech lead DS).

В продолжение темы, связанной с суперсжатием на строках, мы рассмотрим эволюцию различных реализаций суперсжатых индексов для полнотекстового поиска.

Видео: https://moscowpython.ru/meetup/107/supercompressed-indexes/

Moscow Python: http://moscowpython.ru
Курсы Learn Python: http://learn.python.ru
Moscow Python Podcast: http://podcast.python.ru
Заявки на доклады: https://bit.ly/mp-speaker

Avatar for Moscow Python Meetup

Moscow Python Meetup PRO

January 23, 2026
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. Содержание 2 • 1. Постановка задачи • 2. Вспомогательные понятия

    про суперсжатие текста ❏ 2.1. Вейвлет-дерево ❏ 2.2. Преобразование Берроуза-Уилера ❏ 2.3. Обратное преобразование Берроуза-Уилера • 3. Суперсжатые полнотекстовые индексы ❏ 3.1. FM-индекс ❏ 3.2. RLFM-индекс ❏ 3.3. Структуры сдвига • 4. Как реализовать суперсжатые полнотекстовые индексы • 5. Выводы
  2. 2. Вспомогательные понятия про суперсжатие текста 5 • 1. Постановка

    задачи • 2. Вспомогательные понятия про суперсжатие текста ❏ 2.1. Вейвлет-дерево ❏ 2.2. Преобразование Берроуза-Уилера ❏ 2.3. Обратное преобразование Берроуза-Уилера • 3. Суперсжатые полнотекстовые индексы ❏ 3.1. FM-индекс ❏ 3.2. RLFM-индекс ❏ 3.3. Структуры сдвига • 4. Как реализовать суперсжатые полнотекстовые индексы • 5. Выводы
  3. 3. Суперсжатые полнотекстовые индексы 18 • 1. Постановка задачи •

    2. Вспомогательные понятия про суперсжатие текста ❏ 2.1. Вейвлет-дерево ❏ 2.2. Преобразование Берроуза-Уилера ❏ 2.3. Обратное преобразование Берроуза-Уилера • 3. Суперсжатые полнотекстовые индексы ❏ 3.1. FM-индекс ❏ 3.2. RLFM-индекс ❏ 3.3. Структуры сдвига • 4. Как реализовать суперсжатые полнотекстовые индексы • 5. Выводы
  4. 4. Как реализовать суперсжатые полнотекстовые индексы 55 • 1. Постановка

    задачи • 2. Вспомогательные понятия про суперсжатие текста ❏ 2.1. Вейвлет-дерево ❏ 2.2. Преобразование Берроуза-Уилера ❏ 2.3. Обратное преобразование Берроуза-Уилера • 3. Суперсжатые полнотекстовые индексы ❏ 3.1. FM-индекс ❏ 3.2. RLFM-индекс ❏ 3.3. Структуры сдвига • 4. Как реализовать суперсжатые полнотекстовые индексы • 5. Выводы
  5. 5. Выводы 59 Как можно быстро находить вхождения шаблонов в

    повторяющихся текстовых данных большого размера: • используйте суперсжатые полнотекстовые индексы на основе структуры сдвига; • размещайте таблицу сдвига в одном непрерывном блоке памяти, чтобы уменьшить cache miss; • используйте инструкции CPU для подгрузки следующей строки таблицы заранее, чтобы скрыть задержку памяти;