Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Indexing 如何在创建Sitecore项目后以编程方式暂停,直到更新索引_Indexing_Sitecore - Fatal编程技术网

Indexing 如何在创建Sitecore项目后以编程方式暂停,直到更新索引

Indexing 如何在创建Sitecore项目后以编程方式暂停,直到更新索引,indexing,sitecore,Indexing,Sitecore,一位同事问了这个问题,我没有马上找到解决方案,所以我把它贴在这里。他以编程方式在主数据库中插入一个Sitecore项,然后必须插入另一个依赖于索引中第一个项的项。他最初让第二项插入每一两次失败一次,但后来在他的代码中插入了一个手动暂停,试图让索引时间跟上,现在大约每十次失败一次。更好,但不完美 他正在寻找是否有一种Sitecore方法来检查索引是否已经更新,然后再继续插入依赖项 我确实找到了Alex Shyba()的这篇博文,看起来它可能有一些适用性,但我的同事严格地在master DB中工作(

一位同事问了这个问题,我没有马上找到解决方案,所以我把它贴在这里。他以编程方式在主数据库中插入一个Sitecore项,然后必须插入另一个依赖于索引中第一个项的项。他最初让第二项插入每一两次失败一次,但后来在他的代码中插入了一个手动暂停,试图让索引时间跟上,现在大约每十次失败一次。更好,但不完美

他正在寻找是否有一种Sitecore方法来检查索引是否已经更新,然后再继续插入依赖项


我确实找到了Alex Shyba()的这篇博文,看起来它可能有一些适用性,但我的同事严格地在master DB中工作(不涉及发布),我们已经在解决方案中实现了Alex文章中的前几个步骤(我没有详细介绍整件事)。

如果您依赖于索引添加,最后,确保该项位于索引中的唯一方法是在异步索引更新之后执行操作。在Sitecore 6中,我知道的唯一方法是
数据库:propertychanged事件
,关于HTML缓存清除

您的挑战可能是知道在事件处理程序中插入了什么项,以及如何处理它。由于索引更新作为异步作业运行,因此需要某种全局数据结构来传递此状态信息


其他选项(可能更容易)是删除对索引更新的依赖性(使用Sitecore查询或快速查询),或者轮询索引,直到项目出现为止(这有点难看)。

为什么不自己将项目添加到索引中呢?这样,UI将被阻止,直到其完成


您可以通过挂接到item:saved事件来完成此操作。我认为事件处理程序将基于数据库爬虫程序的代码

您是否考虑过将第二个任务作为“定时任务”排队,并使用一些包装器来检查依赖性,必要时重新查询?看

非常感谢,尼克,他正在查看这条信息。谢谢,科林,我已经把通知转交给他了。