加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 应用程序的内存中搜索索引占用了太多内存 – 任何建议?

发布时间:2020-12-15 04:25:17 所属栏目:百科 来源:网络整理
导读:在我们的桌面应用程序中,我们使用 inverted index实现了一个简单的搜索引擎. 不幸的是,我们的一些用户的数据集可能变得非常大,例如在创建反向索引之前占用大约1GB的内存.反向索引本身占用大量内存,几乎与索引的数据一样多(另外1GB的RAM). 显然这会产生内存不
在我们的桌面应用程序中,我们使用 inverted index实现了一个简单的搜索引擎.

不幸的是,我们的一些用户的数据集可能变得非常大,例如在创建反向索引之前占用大约1GB的内存.反向索引本身占用大量内存,几乎与索引的数据一样多(另外1GB的RAM).

显然这会产生内存不足错误的问题,因为每个应用程序的32位Windows限制为2GB内存,或者具有较少规格的计算机的用户难以应对内存需求.

我们的倒排索引存储为:

Dictionary<string,List<ApplicationObject>>

这是在处理每个对象的数据加载期间创建的,这样applicationObject的键字符串和描述字存储在倒排索引中.

所以,我的问题是:是否有可能在空间方式更有效地存储搜索索引?也许需要使用不同的结构或策略?或者可以创建一种CompressedDictionary?由于它存储了很多字符串,我希望它是高度可压缩的.

解决方法

如果它将是1GB …把??它放在磁盘上.使用像Berkeley DB这样的东西.它仍然会非常快.

这是一个为它提供.net接口的项目:

http://sourceforge.net/projects/libdb-dotnet

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读