Бинарный формат обратного индекса - PullRequest
0 голосов
/ 08 октября 2010

Я пытаюсь выяснить, какой двоичный файл может удовлетворить мои потребности в обратном индексе.Допустим, у меня есть документ, который я могу идентифицировать с уникальным идентификатором, и каждый документ может иметь 360 фиксированных значений в диапазоне 0-65535.Примерно так:

Document0: [1, 10, 123, ...] // 360 значений

Document1: [1, 10, 345, ...] // 360 значений

Теперь обратный индекс прост - я могу создать для каждого возможного списка значений документ, который содержит, и запрос может быть выполнен быстро, например:

1: [Document0, Document1]

10: [Document0, Document1]

123: [Document0]

345: [Document1]

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

Теперь я пытаюсь организовать этот файл.Если я хочу быстрый доступ, мне нужны массивы документов фиксированной длины для поиска файлов и чтения.Но фиксированный размер означает, что у меня будет много пустых мест для списка документов.Моя единственная идея состоит в том, чтобы иметь какую-то систему группирования, и каждое значение может принадлежать сегменту определенного размера, например, есть области с размером 1, 2, 4, 8, 16, 32, ... (или что-то подобное) имне нужен какой-то заголовок, который укажет мне, где начинается ковш и его размер.Эта идея оптимизирует размер магазина, но у меня снова возникают проблемы с добавлением новых документов.

Есть идеи, как организовать мой файл "обратного индекса"?

Best.

Ответы [ 2 ]

0 голосов
/ 10 октября 2010

Звучит хорошо.Я делаю чтение очень быстро, запись, с другой стороны, идет медленнее - мне нужно убедиться, что в каждом файле есть уникальный документ (сейчас у меня простая модель для хранения постоянного количества файлов в памяти и их выгрузкидиск при достижении некоторого порога).Спасибо за ответ.

0 голосов
/ 08 октября 2010

Я бы выбрал 65536 файлов, каждый из которых имеет идентификаторы документов.Если вы хотите бережно относиться к файловой системе, разделите ее на 256 каталогов, каждый из которых имеет 256 файлов.

00\00.idx
00\01.idx
..
FF\FF.idx
...