适用于Ruby的可序列化内存全文索引工具

时间:2012-01-24 21:42:57

标签: ruby serialization indexing full-text-search

我试图找到一种方法来构建一个存储在内存中的全文索引,格式可以安全地通过Marshal.dump / Marshal.load,这样我就可以获取索引并对其进行加密在将其存储到磁盘之前。

我需要此功能的理由:我正在设计一个系统,其中用户的内容需要使用自己的密钥加密,并为全文搜索编制索引。我意识到如果对于系统的每个用户我必须解组并将其内容的整个索引加载到内存中,将会有大量的开销和内存使用。对于这个项目,安全性远比效率更重要。

全文索引会保留太多有关用户未加密内容的详细信息,只是将索引存储在加密卷上是不够的,因为每个用户的索引需要使用该用户的唯一密钥进行加密才能维护所需的安全级别。

用户内容将被加密并可能存储在传统的RDBMS中。我的想法是,对于具有大量内容的用户而言,加载/卸载序列化索引的开销要小于解密属于它们的所有数据库行并对每次搜索执行完整扫描的开销。

我对ferret的试验让我想到了成功创建内存中索引的重要性。但是,由于使用Marshal.dump,索引导致Mutex失败。我也正在评估xapiansolr,但似乎也在那里遇到障碍。

在我再进一步之前,我想知道这种方法是否是一种理智的方法,如果不是,我可能会考虑哪些替代方案。我还想知道是否有人以这种方式序列化全文索引,使用了什么工具以及你可以提供的任何指针都有成功。

1 个答案:

答案 0 :(得分:1)

为什么不使用标准的全文搜索引擎并将每个客户端的索引保存在单独的加密磁盘映像上,例如TrueCrypt?每个客户端的磁盘映像都可以有一个唯一的密钥,它可以使用更少的RAM,并且可能需要更少的时间来实现。