反向索引二进制格式

问题描述:

我想弄清楚什么样的二进制文件可以支持我的反向索引需求。假设我有一个文件,可以识别唯一的ID,每个文件可以有360个固定值,范围为0-65535。是这样的:反向索引二进制格式

Document0:[1,10,123,...] // 360个值

文档1:[1,10,345,...] // 360个值

现在,倒排索引是很容易 - 我可以创造的,它包含文件的每个可能值列表,查询可以快速地执行,例如:

1:Document0文档1]

10:Document0文档1 ]

123:Document0]

345:[文档1]

但我想保存在某种文件(二进制),并具有查询快速能力,而且要添加新文档的大量文件没有重新创建整个结构。

现在我正在努力如何组织该文件。如果我想快速访问,我需要固定长度的文档数组来做文件查找和读取。但固定大小意味着我将有很多文档列表的空白空间。我唯一的想法是拥有某种分类系统,每个值可以属于特定大小的桶,例如有大小为1,2,4,8,16,32,...(或类似的东西)的桶,我需要某种类型的标题,它会指出桶的起始位置和桶的大小。这个想法将优化商店的大小,但我又遇到了添加新文档的问题。

任何想法如何组织我的'逆指数'文件?

最好。

我会去找65536个文件,每个文件都有ID。如果你想对文件系统进行温和的处理,把它分成256个文件,每个文件有256个文件。

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

听起来不错。我正在读取速度非常快,写在另一方面速度较慢 - 我需要确保每个文件都有独特的文档(现在我有简单的模型来存储内存中的恒定数量的文件,并转储它们磁盘达到某个阈值时)。感谢您的回应。