Sitecore syncMaster索引策略不起作用

时间:2016-03-03 14:03:34

标签: lucene sitecore lucene.net sitecore8 sitecore8.1

我有一个渲染组件,使用Lucene索引运行搜索以填充自身。

我们定义了两个索引;硕士与硕士网页。在体验编辑器中,它使用主索引和实际站点的Web索引。

我们已将Web索引策略配置为onPublishEndAsync,并且我们已将主索引策略配置为syncMaster,其想法是CMS用户可以添加/编辑为此组件提供支持的Sitecore项目,并在体验编辑器中直接看到它们。

但是,当我们更改Sitecore中的数据时,似乎没有更新主索引。体验编辑器仅在我手动运行索引重建后才显示数据。

        <strategies hint="list:AddStrategy">
          <strategy ref="contentSearch/indexConfigurations/indexUpdateStrategies/syncMaster" />
        </strategies>

为什么索引在数据更改时不会自行更新?

更新

所以我将建议的文件与干净安装进行了比较,它们是相同的。

我应该补充一下,我没有使用标准sitecore_master_index。我们有多个站点在sitecore的同一个实例上运行,因此我们添加了websitename_master_index的配置包含。我已将<index>节点中的配置与sitecore_master_index中的Sitecore.ContentSearch.Lucene.Index.Master.config进行了比较,唯一的区别是爬网程序的<root>元素指向特定网站内容节点,另外还有我们添加了一些自定义字段,但我认为这些字段不会导致问题,我们可以手动重建索引吗?

我在查看showconfig.aspx时发现的另一个有趣的事情是:

<agent type="Sitecore.ContentSearch.Tasks.Optimize" method="Run" interval="12:00:00" patch:source="Sitecore.ContentSearch.config">
    <indexes hint="list">
        <index>sitecore_master_index</index>
    </indexes>
</agent>

我不确定这是否有任何意义,但我们的自定义websitename_master_index没有匹配的条目?

更新

我还在调度程序中添加了调试级别日志记录

                

在crawling.log中,我只看到以下内容:

14416 08:55:10 INFO  [Index=website_master_index] Initializing SitecoreItemCrawler. DB:master / Root:/sitecore/Content/Website/Home    
14416 08:55:10 INFO  [Index=website_master_index] Initializing SynchronousStrategy.

在编辑和保存项目时,日志中没有进一步提及索引,这实际上是标准sitecore_master_index,我们没有更改配置?

1 个答案:

答案 0 :(得分:0)

为了确保不会同时修改Lucene文件,Lucene添加了.lock文件概念-无论要编写什么过程,都必须创建该文件。 如果已经有一个-等待将其删除。

写程序进程应该终止,文件永远不会被删除,因此索引永远不会被更新。

解决方案是手动清理文件夹。

为了做出更好的预测,需要对该进程进行内存快照,以查看内部正在发生什么(或发生does each thread do)。