C# Lucene作为数据存储

C# Lucene作为数据存储,c#,java,lucene,solr,nosql,C#,Java,Lucene,Solr,Nosql,是否可以用作成熟的数据存储(像其他(mongo、Coach)nosql变体一样) 我知道有一些限制,比如一个索引器新更新的文档不会显示在其他索引器中。因此,我们需要重新启动索引器以获取更新 但我最近偶然发现,似乎通过某种快照复制可以避免这些问题 因此,我认为我可以使用lucene作为数据存储,因为它也使用mongo和Coach内部使用的相同类型的文档(基于JSON)来管理文档,并且其经过验证的索引算法可以超快速地获取记录 但我很好奇,以前有人试过吗。。?如果不是的话,不选择这种方法的原因是什么。

是否可以用作成熟的数据存储(像其他(mongo、Coach)nosql变体一样)

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

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

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


但我很好奇,以前有人试过吗。。?如果不是的话,不选择这种方法的原因是什么。

我只使用过Solr,Lucene衍生工具(我建议几乎所有人都使用Solr),因此我的观点可能有点偏颇,但应该可以将Solr用作数据存储是的,但是如果没有更持久的背景,它将不会非常有用

您可能会遇到的问题是,将数据输入Solr并不能保证在您期望的时候将其取回。如果不使用非常严格的面处理,您可能会在检索数据时遇到问题,因为索引器已决定以某种方式将您的结果合并

我对这种方法做了一些尝试,但我看到的唯一真正的好处是,在客户端需要搜索索引的情况下,他们可以在内部快速搜索,然后查询数据库以获取扩展信息

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


TL;医生:是的,但我不推荐。还有耐用性的问题。虽然Lucene索引永远不会被破坏,但我看到过这种情况。Lucene修复破损索引的方法是“扔掉它,从原始数据重建”。这对于索引工具来说非常有意义。但它确实需要将数据存储在其他地方。

。你可以在幻灯片中看到他们的一些理由


无论如何,我认为他们的网站流量非常大(当然比我从事的任何工作都要大),所以我想说Solr可能会为你工作,因为它可以满足他们的需求。

我对Lucene了解不多,但我认为它主要是一个索引器;它不存储文档,只对它们进行索引。所以你需要一个Lucene之外的数据存储。。。“我说得通吗?”帕斯卡,错了。。lucene还可以存储文档。当我们定义字段时,我们可以指定是需要存储项还是只需要索引…根据幻灯片,Guardian仍然使用关系数据存储。Solr被用作为其API提供动力的数据库。