2013-03-26 13 views
4

一位同事問了這個問題,我並沒有立即找到解決方案,所以我在這裏發佈。他以編程方式在主數據庫中插入一個Sitecore項目,然後必須插入另一個項目,該項目對索引中存在的第一個項目具有依賴性。他原來每次或者兩次插入失敗,但是之後他在代碼中插入了一個手動暫停,試圖讓索引時間趕上,現在只有大約每十次都失敗。更好,但不完美。如何以編程方式暫停Sitecore項目創建之後直到索引更新

他正在尋找是否有Sitecore方法來檢查索引是否在繼續插入依賴項之前已被更新。

我找到了Alex Shyba的這篇博文(http://sitecoreblog.alexshyba.com/2011/04/search-index-troubleshooting.html),看起來它可能有一些適用性,但我的同事嚴格在master DB工作(不涉及發佈),並且我們已經有了幾個步驟在我們的解決方案中實施的Alex的文章中(我沒有完成整個事情)。

回答

2

如果您依賴於索引添加,最終確保該項目位於索引中的唯一方法是在異步索引更新之後執行操作。而在Sitecore 6中,我知道的唯一方法是database:propertychanged event。關於HTML緩存清除,請參考Alex Shyba describes this event in another article

您的挑戰很可能會在事件處理程序中知道插入的項目以及如何處理它。您需要某種全局數據結構來傳達此狀態信息,因爲索引更新是作爲異步作業運行的。

其他選項(這可能會更容易)將刪除對索引更新(使用Sitecore查詢或快速查詢)的依賴關係,或輪詢索引,直到項目在那裏(這有點醜陋)。

+0

非常感謝,尼克 - 他正在查看這些信息。 – wildwend 2013-03-26 21:36:33

2

爲什麼不只是自己添加項目索引?這樣,用戶界面將被阻止直到完成。

你可以通過掛鉤項目:保存的事件。我在想這個事件處理程序將基於來自數據庫搜尋器的代碼

+0

謝謝,科林,我已將「供參考」傳遞給他。 – wildwend 2013-03-27 21:32:19

相關問題