我已在我的开发环境中升级到Sitecore 7.1
并重构应用程序中获取项目的某些区域,尝试使用新的ContentSearchManager
。通过代码或通过LinqPad
我没有得到任何结果,但在使用Luke进行调试时,索引确实有项目。
测试不返回任何内容的代码:
var index = ContentSearchManager.GetIndex("sitecore_master_index");
using (var context = index.CreateSearchContext())
{
context.GetQueryable<SearchResultItem>().Where (item => item.Name == "Home");
}
有人能告诉我调试的最佳方法吗?
答案 0 :(得分:2)
您的代码似乎不完整。我希望看到以下内容:
public IEnumerable<Item> GetItems()
{
var index = ContentSearchManager.GetIndex("sitecore_master_index");
using (var context = index.CreateSearchContext())
{
IQueryable<SearchResultItem> query = context.GetQueryable<SearchResultItem>().Where (item => item.Name == "Home");
SearchResults<SearchResultItem> results = query.GetResults();
return results.Hits.Select(hit => hit.Document.GetItem());
}
}
如果不成功,您应该能够在Visual Studio中调试query
对象时看到原始Lucene查询。我建议验证该查询是否与您在Luke中运行的查询匹配。 API可能会在您的查询中应用其他过滤器表达式。