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

时间:2013-02-15 03:00:48

标签: sitecore sitecore6 lucene

我知道Lucene索引无法共享:

  

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

CM和CD之间的xcopy Lucene索引是否可能?

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

更新: 我完全清楚CD必须启动自己的索引更新。有超过30台CD服务器,我想可能会有一段时间不是所有的CD服务器都有相同的索引集。我担心由于某种原因索引会在某些CD服务器中失败并跟踪为什么/哪里将是地狱。这就是为什么试图发现是否有一些替代方法,其中索引在一个地方维护(某种类型共享)并且基本上立即复制到所有CD

4 个答案:

答案 0 :(得分:8)

您需要为CM和CD服务器Web数据库启用History Engine。

请参阅Sitecore Scaling指南中的此摘录。

  

为Sitecore数据库启用History Engine:在web.config中   文件,将以下部分添加到   / configuration / sitecore / databases / database元素,其中id等于   数据库的名称:

<Engines.HistoryEngine.Storage>
  <obj type="Sitecore.Data.$(database).$(database)HistoryStorage, Sitecore.Kernel">
   <param connectionStringName="$(id)" />
   <EntryLifeTime>30.00:00:00</EntryLifeTime>
  </obj>
</Engines.HistoryEngine.Storage>
<Engines.HistoryEngine.SaveDotNetCallStack>false</Engines.HistoryEngine.SaveDotNetCallStack>
  

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

请参阅here

答案 1 :(得分:2)

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

答案 2 :(得分:1)

Wesley Lomax的回答是正确的。但是,我想指出,我也参与了相同的情况,我的数据文件夹中有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" />

答案 3 :(得分:0)

应该指出,sitecore现在建议您在此方案中使用Solr尝试同步多个Lucene索引:

  

使用Solr而不是Lucene的一般原因是......

     

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

     

如果您计划扩展您的网站,您应该使用Solr(拥有   具有多个服务器的分布式设置。)

来自Using Solr or Lucene