2017-05-30 49 views
1

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

回答

1

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

您可以通过其中:

  1. 指数的字符串名字:
Sitecore.ContentSearch.ContentSearchManager.GetIndex("sitecore_web_index") 
  • IIndexable项目 - 在这种情况下Sitecore的将设法找到为您的第一注册索引:
  • Sitecore.ContentSearch.ContentSearchManager.GetIndex(iIndexable) 
    

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

    你应该知道的一件事 - 有一个机会,你的自定义索引有一些定制添加(如计算字段,字段列表索引等)。任何改变都要小心。也许还有其他原因,为什么你的搜索不起作用。尝试使用IndexingManager应用重建索引并查看是否有帮助。

    0

    您还需要记住,在内容管理环境下,“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... 
    }