Sitecore syncMaster索引策略不起作用

Dav*_*ers 6 lucene lucene.net sitecore sitecore8 sitecore8.1

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

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

我们已将Web索引策略配置为onPublishEndAsync,并且我们已将主索引策略配置为syncMaster,CMS用户可以添加/编辑为此组件提供支持的Sitecore项目,并在体验编辑器中立即查看它们.

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

        <strategies hint="list:AddStrategy">
          <strategy ref="contentSearch/indexConfigurations/indexUpdateStrategies/syncMaster" />
        </strategies>
Run Code Online (Sandbox Code Playgroud)

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

UPDATE

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

我应该补充一点,我没有使用标准sitecore_master_index.我们有多个站点在sitecore的同一个实例上运行,因此我们添加了一个config include for websitename_master_index.我已将<index>节点内的配置与sitecore_master_indexin in 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>
Run Code Online (Sandbox Code Playgroud)

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

UPDATE

我还将调试级别日志记录添加到了爬网程序

在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.
Run Code Online (Sandbox Code Playgroud)

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

Nik*_*kov 0

为了保证Lucene文件不会被并发修改,Lucene增加了一个.lock文件的概念——无论进程要写什么,都必须创建文件。如果已经有一个 - 等待它被删除。

如果编写器进程终止,文件永远不会被删除,因此索引永远不会更新。

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

为了做出更好的预测,需要进程的内存快照来查看内部发生的情况(或者每个线程做了什么)。