2011-09-22 73 views
-1

我需要存储一大套什么,在我的脑海(尽管我习惯SQL)关系数据。基本上考虑存储ClueWeb(4TB)的大部分子集。有文件,句子和提取 - 以及每个的属性。一个主要的用例是对提取进行全文搜索。正确的存储大型关系数据集

使用Lucene轻松有效地实现对提取运行全文搜索。但是,语义提取是句子的一部分,这些文件是文档的一部分。句子和文档也有自己的属性,但是当我将提取存储在Lucene中时,句子和文档需要是提取的属性。

是否有一个好的数据库引擎,允许全文搜索而不是提取,还有一个关系结构,这样我可以轻松存储句子和文档的属性?或者有没有办法将这些数据存储在我不明白的Lucene中?

+1

的确,你做出了一个决定:Lucene并没有很好地模拟关系,大多数关系数据库不能很好地进行全文搜索。如果你描述了你需要执行的查询的性质,或者你需要支持的最终用户功能,那么这将有助于更好地做出决定。 –

+0

一个主要用例是通过提取进行搜索(Lucene)。二级用例正在浏览层次结构(文档< - 句子< - 提取)并查看每个对象的属性(SQL)。一个大问题也是规模。我认为扩展了很多关系数据库提高4TB将是困难的。一种解决方案是将lucene和关系数据库都用于数据表示 - 但我仍然不知道可以扩展的关系数据库。 – schmmd

+0

你有没有考虑在Lucene中有一个“外键”字段?这将让你做这个层次结构浏览。 – Xodarap

回答

0

您可以很容易地将索引关系索引为Lucene中的字段值。你不能做的是用连接执行查询。但是,如果您只想向上/向下钻取或获取句子或文档中所有提取的列表,则可以通过索引正确的键来轻松完成。你遇到麻烦的地方就是这样的查询:“所有带有标题的文件都有'foobar'这个单词,其中一个句子有'bletch'这个单词,即使你反规范化 - 即拷贝 - 但是对于4TB的索引,你可能不想这么做