【问题标题】:How do I rebuild a custom Lucene index on a Sitecore content delivery server?如何在 Sitecore 内容交付服务器上重建自定义 Lucene 索引?
【发布时间】:2023-03-20 14:47:01
【问题描述】:

我的 Sitecore 6.2 Content Delivery 服务器上的自定义 Lucene 索引似乎不正确。所以我认为我需要重建所有 3 个自定义索引。我怎么做?我只需要使用共享源索引查看器模块吗?现在我已经在我的 CD 服务器上安装了它,但是由于某种原因它无法正常工作。当我在索引查看器中选择我的自定义索引时 - 没有任何反应。所以我不能那样重建索引。我可以从硬盘驱动器中删除索引文件吗?如果是这样,Lucene 会以多快的速度重建它们?

【问题讨论】:

  • 目前索引查看器无法远程重建索引(即从 CD 上的 CM)。不过,我正在开发一个可行的版本。

标签: sitecore lucene.net sitecore6


【解决方案1】:

我最终联系了 Sitecore 支持,他们将我指向名为 Sitecore 支持工具箱的共享源模块 - http://marketplace.sitecore.net/en/Modules/Sitecore_Support_Toolbox.aspx。一旦我安装了它,我就能够轻松地重建我的索引。

【讨论】:

  • 有人知道 Sitecore 支持工具箱的去向吗? Marketplace 上不再提供它。
【解决方案2】:

自从 Sitecore 6.6 更新 3 或 4(不记得是哪一个)以来,您可以从 Sitecore 控制面板重建您的自定义索引。

在所有以前的版本中,您需要从代码或使用 Sitecore 的自定义模块重新构建它。删除索引文件将不起作用。

重建自定义 Sitecore Lucene 索引的最简单代码是:

Sitecore.Search.SearchManager.GetIndex("your_index_name").Rebuild()

如果重建索引不能解决您的问题,博文"Troubleshooting Sitecore Lucene search and indexing" 可以为您提供帮助。

【讨论】:

    【解决方案3】:

    如上所述,Sitecore 6.x 的早期版本需要使用 IndexViewer 或一些自定义代码来重建自定义索引。我相信在 6.5 版本中,控制面板 > 数据库 > 重建搜索索引开始包含自定义索引,因此不再需要 IndexViewer(但应该仍然可以工作)。

    不过,对于您的具体问题,在我的 CD 服务器上,我有一个重建脚本,可以直接调用它来重建搜索索引。我忘记了我在哪里找到了这个脚本(相信它是由 Sitecore 的 Alex Shyba 发布的)。你可以在https://gist.github.com/Refactored/6776801找到这个脚本的详细信息

    但是,我相信您还有一个不同的问题需要解决。如果您的 CD 服务器未检测到更改并因此未更新,则说明存在配置问题。在解决索引问题时,我将从这篇文章开始:http://sitecoreblog.alexshyba.com/2011/04/search-index-troubleshooting.html

    【讨论】:

      【解决方案4】:

      我在我的一个项目中遇到了同样的要求。这是我的解决方案:

      1. 使用只有一个字段的模板创建配置内容项,例如“重建索引”,默认值为“1”,项目路径示例可以是:“/ sitecore/content/mysite/config/index 重建标志"
      2. 创建一个具有 Run 方法的 IndexRebuilder 类。在 Run 方法中,检查“index rebuild flag”项(来自 Context 数据库),如果“Rebuild Index”字段值等于“1”。重建成功后,将item字段值更新为“0”。
      3. 设置一个指向 IndexRebuilder 类的计划代理。例如,

        请注意,间隔默认为“00:00:00”,以关闭内容管理服务器上的代理。您的构建和部署过程应该将此值设置为“00:05:00”,这允许代理每 5 分钟运行一次。

      从那里,要在内容交付服务器上重建索引,只需将“索引重建标志”项从主数据库发布到内容交付数据库(Web),您的内容交付服务器上的索引应该5 分钟后开始重建。

      【讨论】:

        【解决方案5】:

        单击 Index Viewer 时没有任何反应,这通常表示 Index Viewer 软件包的某些文件尚未部署到您的 CD 服务器。最简单的解决方法——如果你确实在 CD 服务器上运行了 /sitecore——就是直接在 CD 服务器上重新安装包。之后,IndexViewer 就可以工作了。

        如果您的 CD 服务器上没有 /sitecore(Sitecore 建议删除它,或者至少阻止访问它) - 它会变得更加成问题。我建议设置一个页面/网络服务或类似的,执行上面 Maras 建议的代码 - 这样你就可以在需要时随时触发索引重建。

        【讨论】:

        猜你喜欢
        • 2023-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多