如何在Sitecore内容交付服务器上重建自定义Lucene索引?

如何在Sitecore内容交付服务器上重建自定义Lucene索引?,sitecore,lucene.net,sitecore6,Sitecore,Lucene.net,Sitecore6,我的Sitecore 6.2内容交付服务器上的自定义Lucene索引似乎不正确。所以我想我需要重建所有3个自定义索引。我该怎么做?我是否只需要使用共享源索引查看器模块?现在我已经在我的CD服务器上安装了它,但是由于某些原因它不能工作。当我在索引查看器中选择我的自定义索引时,什么都不会发生。所以我不能用这种方式重建索引。我可以从硬盘上删除索引文件吗?如果是这样,Lucene将以多快的速度重建它们?由于Sitecore 6.6更新了3或4(不记得是哪一个),您可以从Sitecore控制面板重建自定义

我的Sitecore 6.2内容交付服务器上的自定义Lucene索引似乎不正确。所以我想我需要重建所有3个自定义索引。我该怎么做?我是否只需要使用共享源索引查看器模块?现在我已经在我的CD服务器上安装了它,但是由于某些原因它不能工作。当我在索引查看器中选择我的自定义索引时,什么都不会发生。所以我不能用这种方式重建索引。我可以从硬盘上删除索引文件吗?如果是这样,Lucene将以多快的速度重建它们?

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

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

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

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

如果重建索引无法解决您的问题,则博客文章可以帮助您。

单击index Viewer而不发生任何事情,通常表示index Viewer软件包的某些文件尚未部署到CD服务器。最简单的修复方法是直接在CD服务器上重新安装包,如果CD服务器上确实运行了/sitecore。在此之后,IndexViewer将工作


如果您的CD服务器上没有/sitecore(sitecore建议删除此选项,或至少阻止对其的访问),则问题会更大。我建议您设置页面/Web服务或类似服务,执行Maras建议的上述代码-这样您就可以在需要时随时触发索引重建。

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

不过,对于您的特定问题,在我的CD服务器上,我有一个重建脚本,可以直接调用该脚本来重建搜索索引。我忘了我在哪里找到这个脚本(相信它是Alex Shyba在Sitecore发布的)。您可以在以下位置找到此脚本的详细信息:


然而,我相信你有一个不同的问题需要解决。如果您的CD服务器没有检测到更改,因此没有更新,则会出现配置问题。在解决索引问题时,我将从本文开始:

我在我的一个项目中遇到了相同的需求。以下是我的解决方案:

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

    请注意,默认情况下,间隔为“00:00:00”,以关闭content management server上的代理。您的构建和部署过程应该将此值改为“00:05:00”,这允许代理每5分钟运行一次


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

    我最终联系了Sitecore支持,他们向我指出了名为Sitecore支持工具箱的共享源代码模块。安装后,我可以轻松地重建索引。

    目前,索引查看器无法远程重建索引(即从CD上的CM)。不过,我正在开发一个可能的版本。支持工具箱中有一个重建索引脚本。这可以有选择地部署:很好。以前从未见过:-)有人知道Sitecore支持工具箱去了哪里吗?它不再在市场上提供。