10

我知道不能共享 Lucene 索引:

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

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

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

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

4

4 回答 4

8

您需要为 CM 和 CD 服务器 Web 数据库启用历史引擎。

请参阅 Sitecore 扩展指南的摘录。

为 Sitecore 数据库启用历史引擎: 在 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 设置中定义的两个后续更新之间的最短等待时间。

这里

于 2013-02-15T08:31:59.283 回答
2

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

于 2013-02-15T19:28:55.083 回答
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" />
于 2013-02-15T14:14:26.420 回答
0

应该指出的是,sitecore 现在建议您在这种情况下使用Solr ,而不是尝试同步多个 Lucene 索引:

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

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

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

使用 Solr 或 Lucene

于 2016-10-31T14:07:33.380 回答