Не совсем ясно, что Вы конкретно спрашиваете, но, в целом:
Так как существует только 1,1 миллиона фрагментов, вы можете индексировать фрагмент, используя 24 бита вместо 32 бит, и сэкономить там место.
Вы также можете сжать фрагменты. Возможно, кодирование Хаффмана будет хорошим выбором. Я бы также попробовал следующую стратегию: вместо использования символа в качестве символа для кодирования вы должны кодировать переходы символов. Поэтому вместо того, чтобы смотреть на вероятность появления символа, посмотрите на вероятность перехода в цепи Маркова , где состояние является текущим символом.
Вы можете найти научную статью, связанную с вашей проблемой здесь (цитата авторов: «Эксперименты показывают, что наш индекс поддерживает быстрые запросы в пределах занимаемого пространства, близкого к тот, который можно получить, сжав строковый словарь с помощью gzip, bzip или ppmdi. "- но, к сожалению, бумага только для оплаты). Я не уверен, насколько сложно реализовать эти идеи. У авторов этой статьи есть веб-сайт , где вы также можете найти реализации (в разделе «Коллекция индексов») различных алгоритмов сжатого индекса .
Если вы хотите продолжить свою обязательно посетите веб-сайты, посвященные Crit-bit tree и Radix tree .
Необычная идея: вместо дерева хеш-таблица. У вас будет в памяти только хэш и строковые данные, возможно, сжатые.
Или вы можете позволить себе прочитать одну страницу? Только хэш и позиция файла в памяти, получить «страницу» со строками, соответствующими этому хешу, предположительно небольшое количество упорядоченных строк, следовательно, очень быстрый поиск в случае коллизий.
Или вы можете позволить себе прочитать одну страницу? Только хэш и позиция файла в памяти, получить «страницу» со строками, соответствующими этому хешу, предположительно небольшое количество упорядоченных строк, следовательно, очень быстрый поиск в случае коллизий.
Или вы можете позволить себе прочитать одну страницу? Только хэш и позиция файла в памяти, получить «страницу» со строками, соответствующими этому хешу, предположительно небольшое количество упорядоченных строк, следовательно, очень быстрый поиск в случае коллизий.