在后台进程中重建Sitecore搜索索引和链接数据库

时间:2009-07-07 16:34:32

标签: sitecore staging

我们有一个带有1个CMS和3个从属服务器的分阶段环境

我想在从属服务器上创建一个页面,该页面将在成功发布时由登台模块调用,该页面将重建所有索引和链接数据库。

我知道我可以使用:

Globals.LinkDatabase.Rebuild(Factory.GetDatabase("web"));

重建链接数据库。

如何在可以访问sitecore上下文的单独进程中获取上述代码,以及如何在单独的后台线程中重建Web数据库的所有索引。

由于

1 个答案:

答案 0 :(得分:2)

我之前使用Sitecore遇到过这个问题,并采用了稍微不同的方法。而不是让登台模块调用的页面我点击了publish:end事件并添加了一个自定义处理程序来重建链接数据库。

<event name="publish:end">
    <handler type="Sitecore.Publishing.HtmlCacheClearer, Sitecore.Kernel" method="ClearCache">
        <sites hint="list">
            <site>website</site>
        </sites>
    </handler>
    <handler type="Sitecore.EventHandlers.CredentialCacheClearer, Sitecore.EventHandlers" method="ClearCache">
        <sites hint="list">
            <site>website</site>
        </sites>
    </handler>

    // Custom Publish Action Below
    <handler type="Customized.Publish.LinkDatabase, Customized" method="Process"/>
</event>
namespace Customized.Publish
{
    public class LinkDatabase
    {
        /// <summary>
        /// Rebuild the web link database.
        /// </summary>

        public void Process()
        {
            // Web db
            Sitecore.Globals.LinkDatabase.Rebuild(Sitecore.Configuration.Factory.GetDatabase("web"));
        }

        /// <summary>
        /// For invoking as an event, typically publish:end.
        /// </summary>
        public void Process(object sender, EventArgs args)
        {
            this.Process();
        }
    }
}