Asp.net mvc 3 Solr部署策略,可在创建整个索引的同时实现100%的运行时间

Asp.net mvc 3 Solr部署策略,可在创建整个索引的同时实现100%的运行时间,asp.net-mvc-3,solr,solrnet,uptime,Asp.net Mvc 3,Solr,Solrnet,Uptime,我正在进行一个Solr3.6和ASP.NETMVC3电子商务项目 我有一个appx的索引。1溶胶中的紫胶产品。需求有一些变化,我们需要重建整个索引。整个索引过程大约需要1个半小时,在此期间网站需要关闭 我如何重建索引并保持站点的活动状态,以提供旧索引中的内容。重建整个索引时减少停机时间的最佳做法是什么。我希望我能100%正常运行 编辑 我将几个URL作为存储字段存储到Solr数据中,因此在向Solr添加数据时动态生成这些URL。若我将应用程序部署在不同的子域(如test.example.com)

我正在进行一个Solr3.6和ASP.NETMVC3电子商务项目

我有一个appx的索引。1溶胶中的紫胶产品。需求有一些变化,我们需要重建整个索引。整个索引过程大约需要1个半小时,在此期间网站需要关闭

我如何重建索引并保持站点的活动状态,以提供旧索引中的内容。重建整个索引时减少停机时间的最佳做法是什么。我希望我能100%正常运行

编辑
我将几个URL作为存储字段存储到Solr数据中,因此在向Solr添加数据时动态生成这些URL。若我将应用程序部署在不同的子域(如test.example.com)上,那个么它会使用错误的URL,其中它只能与example.com一起工作。因此,托管另一个应用程序不是我的选择

如我所见,有几种方法可以正确解决此问题:

  • 不要重建整个索引——只要在必要的记录发生更改时动态更新它们,Solr就可以做得非常简单
  • 在不同端口上创建2个Solr实例,并逐个使用它们。第一次重建时,第二次可以使用旧索引。当重建第一个实例时,您可以使用它,直到重建第二个实例上的索引为止
  • 将布尔字段添加到名为“old_uindex”的索引中。当重新索引开始时,更新所有当前记录并设置old_index=1,然后在配置中的某个地方写入您正在查找old_index=1的记录。然后开始重新编制索引,然后删除旧记录。它可以通过Solr的deleteByQuery和Solr4.x中的原子更新或手动更新来完成

  • 您可以利用in-Solr的概念,从而拥有用户当前正在搜索的live core和备用core,您可以在其中更改架构、重新编制索引等。然后使用该命令,您可以在无任何用户停机的情况下切换live core和备用core。交换将由Solr内部处理,您的用户将永远不会注意到差异。

    谢谢,现在正在努力实现这一点。这太棒了。谢谢。数据目录呢?所有核心都应该有不同的数据目录…?是的,每个核心都应该有不同的数据目录。签出Solr下载中的/example/multicore文件夹,查看他们建议如何设置结构。(在每个coreX文件夹中都有一个conf,还有一个索引数据文件夹)。请参阅solr.xml文件,了解如何为每个核心的文件夹设置配置solr。