Lucene作为数据存储

时间:2010-09-27 10:41:17

标签: c# java lucene solr nosql

是否可以将Lucene用作完整的数据存储(与其他(mongo,couch)nosql变体一样)。

我知道有一些限制,例如一个索引器的新更新文档将不会显示在其他索引器中。因此,我们需要重新启动索引器才能获得更新。

但我最近偶然发现solr,似乎某些快照复制可以避免这些问题。

所以我认为我可以使用lucene作为数据存储,因为它还使用mongo和couch内部用于管理文档的相同类型的文档(基于JSON),并且其经过验证的索引算法可以超快速地获取记录。

但我很好奇有没有人试过呢......?如果没有选择这种方法的原因是什么。

3 个答案:

答案 0 :(得分:15)

还存在耐久性问题。虽然Lucene索引不应该被破坏,但我已经看到它发生了。 Lucene修复破损索引的方法是“抛弃它并从原始数据重建”。这对于索引工具来说非常有意义。但它确实要求您将数据存储在其他地方。

答案 1 :(得分:4)

我只使用了Solr,Lucene衍生物(我建议将Solr用于任何人)所以我的观点可能有点偏颇但是应该可以使用Solr作为数据存储区是的,但它不会如果没有更长久的背景,那就非常有用。

您可能遇到的问题是将数据输入Solr并不能保证您在预期时将其恢复。如果使用相当严格的分面,您可能会在检索数据时遇到问题,因为索引器已决定以某种方式将结果归结。

我用这种方法进行了一些实验,但我看到的唯一真正好处是你想在客户端搜索索引,以便他们可以在内部快速搜索,然后查询数据库以获取扩展信息。

我的建议是使用solr进行搜索,然后让它返回您可能需要的简短数据样本,以及在传统数据存储中进一步查询的索引。

TL; DR:是的,但我不推荐它。

答案 2 :(得分:3)

The Guardian uses Solr as their data store。您可以在幻灯片中看到他们的一些原因。

无论如何,我认为他们的网站流量非常大(当然比我工作的任何东西都要多),所以我觉得我觉得Solr可能适合你,因为它可以满足他们的要求。