我正在试图找出哪种二进制文件可以支持我对逆索引的需求。假设我有可以使用唯一ID识别的文档,并且每个文档可以在0-65535范围内具有360个固定值。像这样:
Document0:[1,10,123,...] // 360值
文件1:[1,10,345,...] // 360值
现在,反向索引很容易 - 我可以为包含的每个可能的文档值列表创建,并且查询可以快速执行,例如:
1:[Document0,Document1]
10:[Document0,Document1]
123:[Document0]
345:[Document1]
但我想将大量文档存储在某种文件(二进制文件)中,并且能够快速查询,还能添加新文档而无需重新创建整个结构。
现在我正在努力如何组织该文件。如果我想快速访问我需要固定长度的文档数组来进行文件搜索而不是读取。但固定大小意味着我将有很多文档列表的空白空间。我唯一的想法是拥有某种存储系统,每个值都属于特定大小的存储桶,例如:有一些大小为1,2,4,8,16,32 ......(或类似的东西)的水桶,我需要一些标题,它将指向我的桶开始和桶的大小。这个想法将优化商店的规模,但我再次遇到添加新文件的问题。
知道如何组织我的'逆索引'文件吗?
最佳。
答案 0 :(得分:0)
我会去找65536个文件,每个文件都有文件的ID。如果你想对文件系统保持温和,可以将其分成256个目录,每个目录有256个文件。
00\00.idx
00\01.idx
..
FF\FF.idx
答案 1 :(得分:0)
听起来不错。我正在快速读取,另一方面写入速度较慢 - 我需要确保每个文件中都有唯一的文档(现在我有简单的模型在内存中存储常量文件,并将它们转储到达到某个阈值时的磁盘)。谢谢你的回复。