0

我已经在我的开发环境中升级到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");
}

有人可以告诉我调试和连接的最佳方法吗?

4

1 回答 1

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());
    }
}

如果这不成功,您应该能够query在 Visual Studio 中调试对象时看到原始 Lucene 查询。我建议验证该查询是否与您在 Luke 中运行的查询匹配。API 可能会将其他过滤器表达式应用于您的查询。

于 2014-01-26T18:04:13.730 回答