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

时间:2013-09-30 18:50:59

标签: sitecore lucene.net sitecore6

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

5 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

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

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

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

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

答案 2 :(得分:2)

如上所述,早期版本的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

答案 3 :(得分:1)

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

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

    < agent type =“MyAssembly.IndexRebuilder,MyAssembly”method =“Run”interval =“00:00:00”/>

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

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

答案 4 :(得分:0)

单击“索引查看器”并未发生任何事情,通常表示尚未将部署的Index Viewer程序包文件部署到CD服务器。最简单的解决方法 - 如果你在CD服务器上运行/ sitecore - 就是直接在CD服务器上重新安装软件包。在此之后,IndexViewer将工作。

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