我试图弄清楚什么样的二进制文件可以支持我对反向索引的需求。假设我有一个可以用唯一 ID 识别的文档,每个文档可以有 360 个固定值,范围为 0-65535。像这样的东西:
Document0: [1, 10, 123, ...] // 360 个值
Document1: [1, 10, 345, ...] // 360 个值
现在,反向索引很容易 - 我可以为包含的每个可能的文档值列表创建,并且可以快速执行查询,例如:
1:[文档0,文档1]
10:[文档0,文档1]
123:[文档0]
345:[文档1]
但我想将大量文档存储在某种文件(二进制)中,并且能够快速查询,但也可以在不重新创建整个结构的情况下添加新文档。
现在我正在努力如何组织该文件。如果我想快速访问,我需要固定长度的文档数组来进行文件查找而不是读取。但是固定大小意味着我将有很多空白空间用于文档列表。我唯一的想法是拥有某种分桶系统,每个值都可以属于特定大小的桶,例如,有大小为 1、2、4、8、16、32、...(或类似的东西)的桶和我需要某种标题,它将指向我存储桶的开始位置和存储桶的大小。这个想法将优化存储大小,但我再次遇到添加新文档的问题。
知道如何组织我的“反向索引”文件吗?
最好的。