如何在庞大的内容交付webfarm中维护Sitecore Lucene索引?

如何在庞大的内容交付webfarm中维护Sitecore Lucene索引?,sitecore,sitecore6,lucene,Sitecore,Sitecore6,Lucene,我知道Lucene索引不能共享: Sitecore在的文件系统中保留Lucene索引的本地副本 每个实例,不支持在每个实例之间共享索引 实例 是否可以在CM和CD之间xcopyLucene索引 是否有其他方法或建议在30多个内容交付服务器中维护索引 更新: 我完全知道CD必须启动自己的索引更新。对于30多台CD服务器,我认为可能会有一段时间,并非所有CD服务器都有相同的索引集。我担心由于某种原因,索引会在一些CD服务器中失败,并跟踪为什么/哪里会是地狱。这就是为什么要尝试发现是否有其他方法可以将

我知道Lucene索引不能共享:

Sitecore在的文件系统中保留Lucene索引的本地副本 每个实例,不支持在每个实例之间共享索引 实例

是否可以在CM和CD之间
xcopy
Lucene索引

是否有其他方法或建议在30多个内容交付服务器中维护索引

更新:
我完全知道CD必须启动自己的索引更新。对于30多台CD服务器,我认为可能会有一段时间,并非所有CD服务器都有相同的索引集。我担心由于某种原因,索引会在一些CD服务器中失败,并跟踪为什么/哪里会是地狱。这就是为什么要尝试发现是否有其他方法可以将索引维护在一个地方(某种类型的共享),并基本上立即复制到所有CD上,您需要为CM和CD服务器web数据库启用历史引擎

请参阅Sitecore缩放指南中的摘录

要为Sitecore数据库启用历史引擎,请执行以下操作:在web.config中 文件中,将以下部分添加到 /配置/sitecore/databases/database元素,其中id等于 数据库的名称:


30.00:00:00
假的
更改Sitecore项目时,将更新Lucene索引 立即在进行更改的Sitecore实例上。在…上 远程服务器在多服务器环境中,Lucene索引是 项目更改后不会立即更新。Lucene指数 在中定义的间隔后自动更新 web.config文件,在index.UpdateInterval设置中,使用 中定义的两个后续更新之间的最小等待时间 Indexing.UpdateJobThrottle设置


请参见

韦斯利·洛马克斯的答案是正确的。然而,我想指出的是,在1000年代,我也遇到过同样的情况,我的数据文件夹中有项目。我更新了web.config设置,如下所示:

 <!--  INDEX FOLDER
        The path to the folder where the Lucene.Net search indexes are stored.
        Default value: $(dataFolder)/indexes
  -->
  <setting name="IndexFolder" value="$(dataFolder)/indexes" />
  <!--  INDEX UPDATE INTERVAL
        Gets the interval between the IndexingManager checking its queue for pending actions.
        Default value: "00:01:00" (1 minute)
  -->
  <setting name="Indexing.UpdateInterval" value="00:00:30" />
  <!--  INDEX UPDATE JOB THROTTLE
        Gets the minimum time to wait between individual index update jobs.
        Default value: "00:00:01" (1 second)
  -->
  <setting name="Indexing.UpdateJobThrottle" value="00:00:01" />


您也可以考虑使用在内存中运行索引爬行操作的开放源代码,并将索引提交回文件系统,这样在重建过程中不会丢失任何索引内容。这至少有帮助。然后,可能会设置某种代理在一天中的特定时间运行此爬网/重建操作,以保持所有CD服务器同时同步执行此操作。

应该指出的是,sitecore现在建议您在此场景中使用,而不是尝试同步多个Lucene索引:

使用Solr代替Lucene的一般原因是

如果您使用多个内容交付服务器(或计划以后使用), 使用Solr。Solr在这样的环境中自动工作。你可以 使用Lucene,但必须确保索引是同步的 你自己跨服务器

因此,如果你计划扩展你的站点,你应该使用Solr(有一个 具有多台服务器的分布式安装)


谢谢你的回复。我完全了解这些配置,CD必须启动自己的索引更新。对于30多台CD服务器,我认为可能会有一段时间,并非所有CD服务器都有相同的索引集。我担心由于某种原因,索引会在一些CD服务器中失败,并跟踪为什么/哪里会是地狱。这就是为什么我们试图发现是否有一种替代方法,将索引维护在一个地方(某种共享),并基本上立即复制到所有CD。我们通过首先为所有CD服务器打开历史引擎来维护索引,但是在CM服务器上运行一个计划任务,每周重建索引并将其FTPs到CD服务器。我相信你也可以用xcopy做同样的事情。您只需要确保正在重建的索引集指向正确的数据库(通常是web)。这可能意味着您需要在CM服务器上设置第二组索引,该索引仅用于重建并推送到CD服务器。
 <!--  INDEX FOLDER
        The path to the folder where the Lucene.Net search indexes are stored.
        Default value: $(dataFolder)/indexes
  -->
  <setting name="IndexFolder" value="$(dataFolder)/indexes" />
  <!--  INDEX UPDATE INTERVAL
        Gets the interval between the IndexingManager checking its queue for pending actions.
        Default value: "00:01:00" (1 minute)
  -->
  <setting name="Indexing.UpdateInterval" value="00:00:30" />
  <!--  INDEX UPDATE JOB THROTTLE
        Gets the minimum time to wait between individual index update jobs.
        Default value: "00:00:01" (1 second)
  -->
  <setting name="Indexing.UpdateJobThrottle" value="00:00:01" />