首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >存储倒排索引

存储倒排索引
EN

Stack Overflow用户
提问于 2010-09-11 03:29:57
回答 6查看 3.5K关注 0票数 5

我正在做一个关于信息检索的项目。我已经使用Hadoop/Python创建了一个完整的倒排索引。Hadoop将索引输出为(word,documentlist)对,并将其写入文件。为了快速访问,我使用上面的文件创建了一个字典(哈希表)。我的问题是,我如何在磁盘上存储这样的索引,同时又具有快速的访问时间。目前,我正在使用python pickle模块存储字典并从中加载,但它会立即将整个索引放入内存(或者是这样吗?)。请建议一种存储和搜索索引的有效方法。

我的字典结构如下(使用嵌套字典)

{word:{doc1:位置,doc2:位置,....}}

这样我就可以通过dictionaryword.keys()获得包含单词的文档...诸若此类。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-09-11 03:45:13

shelve

目前,我正在使用python pickle模块存储字典并从中加载,但它会将整个索引一次性带到内存中(或者是这样吗?)

是的,它确实带来了所有的东西。

这有问题吗?如果这不是一个实际的问题,那就坚持下去。

如果这是一个问题,你有什么问题?太慢了?太快了?太多彩了?是否使用了太多内存?你有什么问题?

票数 5
EN

Stack Overflow用户

发布于 2010-09-14 11:24:54

我会使用Lucene。为什么要重新发明轮子呢?

票数 1
EN

Stack Overflow用户

发布于 2010-09-11 05:01:48

只需将其存储在如下所示的字符串中:

代码语言:javascript
复制
<entry1>,<entry2>,<entry3>,...,<entryN>

如果<entry*>包含',‘字符,请使用其他分隔符,如'\t’。这比等效的酸洗字符串的大小要小。

如果您想加载它,只需执行以下操作:

代码语言:javascript
复制
L = s.split(delimiter)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3687715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档