2012-03-15 134 views
2

我知道这个问题已经一次又一次地在stackoverflow和谷歌问,但我发现所有的答案不能满足我。大多数解决方案都假设整个索引可以放在内存中,然后我们可以通过Java序列化将它存储到磁盘中。当需要索引时,我们必须将整个索引加载到内存中。这样的解决方案: solution 1, solution 2。但是,正如我们所知道的那样,这种假设并不总是正确的,所以当它不适合内存时,我应该如何将倒排文档索引存储到磁盘?如何将倒排文档索引存储在磁盘上?

如果您可以给我Java解决方案,我将不胜感激。

+0

您的结构如何实施?索引中的术语是否太大而无法存储或仅包含文档列表?你想保持内存使用接近零或有一个结构,在内存中保持“频繁”的条款,以减少磁盘访问?所有这些都会影响你将如何存储和访问索引。 – 2012-03-15 13:01:57

回答

0

我会尝试JDBM3这支持树和哈希集合,唯一的要求是每个键或条目都适合内存。

如果您有超大的条目,我建议将每个条目存储为可以通过内存映射来提取部分数据的文件。在查找表中,您可以将键存储到文件名。 (或者将文件命名为密钥)