Indexing 反向索引二进制格式

Indexing 反向索引二进制格式,indexing,inverse,Indexing,Inverse,我试图找出哪种二进制文件可以支持我对反向索引的需求。假设我有一个可以用唯一ID标识的文档,每个文档可以有360个固定值,范围为0-65535。大概是这样的: Document0:[1,10,123,…]//360个值 文档1:[1,10345,…]//360个值 现在,反向索引很容易-我可以为包含的文档的每个可能值列表创建索引,并且可以快速执行查询,例如: 1:[文档0,文档1] 10:[文件0,文件1] 123:[文件0] 345:[文件1] 但我想以某种二进制文件存储大量文档,并且能够快速查

我试图找出哪种二进制文件可以支持我对反向索引的需求。假设我有一个可以用唯一ID标识的文档,每个文档可以有360个固定值,范围为0-65535。大概是这样的:

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

文档1:[1,10345,…]//360个值

现在,反向索引很容易-我可以为包含的文档的每个可能值列表创建索引,并且可以快速执行查询,例如:

1:[文档0,文档1]

10:[文件0,文件1]

123:[文件0]

345:[文件1]

但我想以某种二进制文件存储大量文档,并且能够快速查询,但也可以添加新文档,而无需重新创建整个结构

现在我正在努力组织这个文件。如果我想快速访问,我需要固定长度的文档数组来进行文件查找和读取。但固定的大小意味着我将有很多空白用于文档列表。我唯一的想法是有一种桶形系统,每个值都可以属于特定大小的桶,例如,有大小为1、2、4、8、16、32。。。或者类似的东西,我需要某种类型的收割台,它会告诉我桶的起始位置和大小。这个想法将优化商店规模,但我在添加新文档时再次遇到问题

知道如何组织我的“反向索引”文件吗


最好。

我会选择65536个文件,每个文件都有文档的ID。如果您想在文件系统上更温和一些,请将其划分为256个目录,每个目录有256个文件

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

听起来不错。我的读取速度非常快,但另一方面写入速度较慢-我需要确保每个文件中都有唯一的文档,因为现在我有一个简单的模型来在内存中存储恒定数量的文件,并在达到某个阈值时将其转储到磁盘上。谢谢你的回复