Что такое Винт в Lucene? - PullRequest
2 голосов
/ 02 мая 2010

Я хочу знать, что такое ВИНТ в Lucene?

Я прочитал эту статью, но я не понимаю, что это и где Lucene использует это? Почему Lucene не использует простое или большое целое число?

Спасибо.

Ответы [ 3 ]

4 голосов
/ 02 мая 2010

VInt чрезвычайно экономит пространство. Теоретически это может сэкономить до 75% пространства.

В Lucene многие структуры представляют собой список целых чисел. Например, список документов для данного термина, позиции (и смещения) терминов в документах, среди прочего. Эти списки образуют большую часть данных по люцену.

Подумайте об индексах Lucene для миллионов документов, для которых требуется десятки гигабайт. Уменьшение пространства более чем наполовину снижает требования к дисковому пространству. Хотя экономия дискового пространства не может быть большой победой, учитывая, что дисковое пространство дешевое, реальный выигрыш заключается в уменьшении дискового ввода-вывода. Дисковый ввод-вывод для чтения данных VInt ниже, чем чтение целых чисел, что автоматически приводит к повышению производительности.

1 голос
/ 16 июля 2015

По первому вопросу: Формат переменной длины для положительных целых чисел определяется, где старший бит каждого байта указывает, осталось ли считывать больше байтов. Семь младших разрядов добавляются как все более значимые биты в результирующее целочисленное значение. Таким образом, значения от нуля до 127 могут храниться в одном байте, значения от 128 до 16,383 могут храниться в двух байтах и ​​так далее. https://lucene.apache.org/core/3_0_3/fileformats.html.

Итак, чтобы сохранить список из n целых чисел, объем памяти, который вам понадобится, составляет [например] 4 * n байтов. Но с Vint все числа до 128 будут храниться с использованием только 1 байта [и т. Д.], Что экономит много памяти.

Vint предоставляет сжатое представление целых чисел, а ответ Шашиканта уже объясняет требования и преимущества сжатия в Lucene.

1 голос
/ 02 мая 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...