在具有多个Web服务器的现有.NET / SQL Server堆栈上实现Lucene - 在数据库中存储索引?

时间:2012-05-30 11:16:51

标签: lucene.net

本文为我提供了大量信息:
Implement Lucene on Existing .NET / SQL Server stack with multiple webservers

我想通过询问有关实现Lucene目录的概念来实现,该目录将索引持久保存到数据库(在我的情况下是SQL Server) - 如果有人有SWAG的努力会有所帮助。

我可以看到Java领域有这个(例如Compass),我真的希望Stackoverflow的人可能会考虑这个吗?任何反馈都将不胜感激。

我的新手认为,持久存储数据库的索引将是解决“分发”问题的一种方法。因此,不是实现消息传递(由于部署限制而不能用于我的软件),或者调度(可能是好的 - 产品人员总是在决定'当前'索引数据的方式时会变得很疯狂),IndexReader重新打开( )将在任何服务器节点上有效地更新索引快照。

如果DB并发/加载不是问题解决的核心,这是否有效? - 我们的使用侧重于促进对字段的不同数据分析,从而促进不同形式的匹配。

我们的部署体系结构/限制实际上并不允许我们坚持专用服务器ala SOLR,因此我们已经打折了这种分发概念。

3 个答案:

答案 0 :(得分:0)

您有多少指数变化?您想什么时候阅读索引? (在应用程序启动时?)将索引放入数据库并在创建索引时“下载”它可能会消耗太多资源。

不确定您的部署限制,但是您是否可以为您的计算机提供共享文件空间(例如,SMB / NFS共享或类似的,甚至是基于SAN的解决方案)?

答案 1 :(得分:0)

我会有点害怕db中索引的性能问题。看看Elasticsearch。它是指南针的继承者。它需要Java,但为.NET解决方案提供了非常简洁的REST接口。 Elasticsearch支持多个节点之间的分发和复制。您可以在Web服务器节点上运行它。

答案 2 :(得分:0)

此解决方案将终止索引的性能,因为它必须从数据库中检索它。 我强烈建议转向更新/更好的替代方案,即Solr(例如使用Solr.NET)或ElasticSearch(使用NEST

Solr是Lucene索引的高级接口/管理器,为您解决了简化配置,群集,复制等问题。好的是,如果你有一些exp。与Lucene一起,这不会是一个很大的进步

ElasticSearch是一种不同的方法,但它并不难学。