【发布时间】:2013-03-02 08:44:23
【问题描述】:
出于学习目的,我正在尝试为大量收藏编写搜索引擎。我从自己的直觉开始。然后我研究并最终得出了一个可行的模型。
我正在构建一个巨大的哈希表来保存我的集合中的所有术语。从集合中构建它是非常昂贵的。一旦我计算了表,我想将它保存到磁盘,这样每当我想在我的程序中访问这个哈希表时,我就可以从磁盘再次加载它。
是否有任何标准的方法来做到这一点,还是我必须发明自己的文件格式和技巧才能做到这一点?
注意:has-table仅用于存储所有term出现,我打算将主要排名数据存储在一个postings文件中,并将其指针设置在hash-table的对应term中。
我在 C 中工作。
【问题讨论】:
-
将其存储为键值对列表?不确定这是否是您要找的。但是,通常计算哈希值很便宜,因此从这样的列表中重建它是合理的。
-
数据库和其他面向磁盘的存储使用 b+ 树。
-
@FatalError has-table 仅用于存储所有术语出现,我打算将主要排名数据存储在一个帖子文件中,并将其指针设置在哈希表中的相应术语中。跨度>
-
您使用什么操作系统?你试过
mmap吗? -
@Eddy_Em 我在 32 位 Ubuntu 上。 mmap 没有最大可寻址空间 4GB 的限制吗?我有一个相关的问题stackoverflow.com/questions/15388408/… 如果你有时间并且对 mmap() 和将 DS 保存到磁盘有更多了解,我想和你谈谈
标签: c search data-structures hash indexing