指定要在 sitecore lucene 中使用的索引

Specifying which index to use in sitecore lucene

我有一个用我继承的 sitecore 制作的网站。搜索似乎没有正常工作。基本上文件似乎没有正确返回。我注意到有默认的 sitecore_web_index 索引和似乎或多或少索引相同内容的自定义索引。目前搜索查询自定义索引但是我想将查询更改为默认索引以查看是否返回文档。有人告诉我您可以指定要使用的索引,但此人从未告诉我该怎么做。有谁知道我该如何改变它?

Sitecore 8 内容搜索使用 Sitecore.ContentSearch.ContentSearchManager.GetIndex(...) 方法检索所选索引。

你可以通过:

  1. 作为字符串的索引名称:
Sitecore.ContentSearch.ContentSearchManager.GetIndex("sitecore_web_index")
  1. IIndexable 项目 - 在这种情况下,Sitecore 将尝试为您找到第一个注册索引:
Sitecore.ContentSearch.ContentSearchManager.GetIndex(iIndexable)

只需找到代码中使用 GetIndex 的位置,并将其替换为默认索引名称即可。

您应该注意一件事 - 您的自定义索引有可能添加了一些自定义项(例如计算字段、索引字段列表等)。小心任何变化。也许还有其他原因导致您的搜索不起作用。尝试使用 IndexingManager 应用重建索引,看看是否有帮助。

您还需要记住,在 Content Manager 环境中,将使用 "sitecore_master_index",在 CD 环境中,将使用 "sitecore_web_index" 所以这会导致测试错误

您可以尝试动态获取索引,在这种情况下,代码将select根据其环境使用正确的索引

var indexable = Sitecore.Context.Item as SitecoreIndexableItem;

ISearchIndex index = ContentSearchManager.GetIndex(indexable);

using (IProviderSearchContext context = index.CreateSearchContext())
{
 //search code...
}

不得不这样做...

var indexable = (SitecoreIndexableItem)Sitecore.Context.Item;