指定在sitecore lucene中使用哪个索引

时间:2017-05-30 10:20:52

标签: sitecore sitecore8

我有一个网站是在我继承的sitecore中生成的。搜索似乎没有正常工作。基本上文档似乎没有正确返回。我注意到有默认的sitecore_web_index索引以及一个似乎或多或少索引相同内容的自定义索引。目前搜索查询自定义索引但是我想将查询更改为默认索引以查看是否返回文档。有人告诉我你可以指定使用哪个索引,但是那个人从未告诉过我该怎么做。有谁知道我怎么能改变这个?

2 个答案:

答案 0 :(得分:1)

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

你可以通过:

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

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

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

答案 1 :(得分:0)

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

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

var indexable = Sitecore.Context.Item as SitecoreIndexableItem;

ISearchIndex index = ContentSearchManager.GetIndex(indexable);

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