我正在做一个关于信息检索的项目。我已经使用Hadoop/Python创建了一个完整的倒排索引。Hadoop将索引输出为(word,documentlist)对,并将其写入文件。为了快速访问,我使用上面的文件创建了一个字典(哈希表)。我的问题是,我如何在磁盘上存储这样的索引,同时又具有快速的访问时间。目前,我正在使用python pickle模块存储字典并从中加载,但它会立即将整个索引放入内存(或者是这样吗?)。请建议一种存储和搜索索引的有效方法。
我的字典结构如下(使用嵌套字典)
{word:{doc1:位置,doc2:位置,....}}
这样我就可以通过dictionaryword.keys()获得包含单词的文档...诸若此类。
发布于 2010-09-11 03:45:13
shelve
目前,我正在使用python pickle模块存储字典并从中加载,但它会将整个索引一次性带到内存中(或者是这样吗?)
是的,它确实带来了所有的东西。
这有问题吗?如果这不是一个实际的问题,那就坚持下去。
如果这是一个问题,你有什么问题?太慢了?太快了?太多彩了?是否使用了太多内存?你有什么问题?
发布于 2010-09-14 11:24:54
我会使用Lucene。为什么要重新发明轮子呢?
发布于 2010-09-11 05:01:48
只需将其存储在如下所示的字符串中:
<entry1>,<entry2>,<entry3>,...,<entryN>如果<entry*>包含',‘字符,请使用其他分隔符,如'\t’。这比等效的酸洗字符串的大小要小。
如果您想加载它,只需执行以下操作:
L = s.split(delimiter)https://stackoverflow.com/questions/3687715
复制相似问题