在我们的桌面应用程序中,我们使用倒排索引实现了一个简单的搜索引擎。
不幸的是,我们的一些用户数据集可能会变得非常大,例如在创建倒排索引之前占用了大约 1GB 的内存。倒排索引本身占用了大量内存,几乎与被索引的数据一样多(另外 1GB 的 RAM)。
显然,这会产生内存不足错误的问题,因为每个应用程序 2GB 内存的 32 位 Windows 限制受到影响,或者使用较低规格计算机的用户难以应对内存需求。
我们的倒排索引存储为:
Dictionary<string, List<ApplicationObject>>
这是在处理每个对象时在数据加载期间创建的,以便将 applicationObject 的键字符串和描述词存储在倒排索引中。
所以,我的问题是:是否可以在空间方面更有效地存储搜索索引?也许需要使用不同的结构或策略?或者是否可以创建一种 CompressedDictionary?由于它存储大量字符串,我希望它具有高度可压缩性。