Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于Ruby的可序列化内存全文索引工具_Ruby_Serialization_Indexing_Full Text Search - Fatal编程技术网

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

用于Ruby的可序列化内存全文索引工具,ruby,serialization,indexing,full-text-search,Ruby,Serialization,Indexing,Full Text Search,我正试图找到一种方法来构建存储在内存中的全文索引,其格式可以安全地通过Marshal.dump/Marshal.load,以便在将索引存储到磁盘之前对其进行加密 我需要这个功能的理由是:我正在设计一个系统,在这个系统中,用户的内容需要使用自己的密钥进行加密,并为全文搜索编制索引。我意识到,如果对于系统的每个用户,我必须取消封送并将其内容的整个索引加载到内存中,那么会有很大的开销和内存使用。对于这个项目来说,安全远比效率重要 全文索引将保留太多关于用户内容的详细信息而无法进行加密,而仅仅将索引存储

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

我需要这个功能的理由是:我正在设计一个系统,在这个系统中,用户的内容需要使用自己的密钥进行加密,并为全文搜索编制索引。我意识到,如果对于系统的每个用户,我必须取消封送并将其内容的整个索引加载到内存中,那么会有很大的开销和内存使用。对于这个项目来说,安全远比效率重要

全文索引将保留太多关于用户内容的详细信息而无法进行加密,而仅仅将索引存储在加密卷上是不够的,因为每个用户的索引都需要使用该用户的唯一密钥进行加密,以保持所需的安全级别

用户内容将被加密,并可能存储在传统的RDBMS中。我的想法是,对于拥有大量内容的用户来说,加载/卸载序列化索引比解密属于它们的所有DB行并对每个搜索进行完整扫描的开销要小

我对雪貂的试验使我成功地创建了一个内存索引。但是,由于使用了互斥锁,索引未能通过
封送.dump
。我也在评估
xapian
solr
,但似乎也遇到了障碍


在我走之前,我想知道这种方法是否是一个明智的选择,如果不是这样的话,我会选择什么样的选择。我还想知道是否有人成功地用这种方式序列化了全文索引,您使用了什么工具,以及您可以提供的任何指针。

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

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

这是一种有趣的方法。我会看看TrueCrypt,如果没有更好的答案,我会接受你的答案,走这条路。谢谢。决定改用
encfs
,因为该应用程序将托管在Ubuntu上,
encfs
比TrueCrypt更容易设置。不过想法是一样的。你的回答肯定让我走上了正确的道路。这是一个有趣的方法。我会看看TrueCrypt,如果没有更好的答案,我会接受你的答案,走这条路。谢谢。决定改用
encfs
,因为该应用程序将托管在Ubuntu上,
encfs
比TrueCrypt更容易设置。不过想法是一样的。你的回答肯定使我走上了正确的道路。