我有一个渲染组件,使用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
,我们没有更改配置?
答案 0 :(得分:0)
为了确保不会同时修改Lucene文件,Lucene添加了.lock
文件概念-无论要编写什么过程,都必须创建该文件。
如果已经有一个-等待将其删除。
写程序进程应该终止,文件永远不会被删除,因此索引永远不会被更新。
解决方案是手动清理文件夹。
为了做出更好的预测,需要对该进程进行内存快照,以查看内部正在发生什么(或发生does each thread do)。