2013-07-09 1 views
3

В Lucene.Net можно получить общее количество согласованных документов, используя свойство TopDocs.TotalHits.Как получить итоговый результат из Sitecore 7 LINQ ContentSearch API?

Эта функциональность was exposed in the Advanced Database Crawler API с использованием параметра out в классе QueryRunner.

Каков рекомендуемый способ получения итогового результата с использованием нового LINQ API Sitecore 7? Это не представляется возможным без перечисления всего набора результатов. Вот то, что я до сих пор:

var index = ContentSearchManager.GetIndex("sitecore_web_index"); 
using (var context = index.CreateSearchContext()) 
{ 
    var query = context.GetQueryable<SearchResultItem>() 
         .Where(item => item.Content == "banana"); 

    var totalResults = query.Count(); // Enumeration 
    var topTenResults = query.Take(10); // Enumeration again? this can't be right? 

    ... 
} 

ответ

7

Попробуйте это:

using Sitecore.ContentSearch.Linq; // GetResults on IQueryable 

var index = ContentSearchManager.GetIndex("sitecore_web_index"); 
using (var context = index.CreateSearchContext()) 
{ 
    var query = context.GetQueryable<SearchResultItem>() 
        .Where(item => item.Content == "banana"); 
    var results = query.GetResults(); 


    var totalResults = results.TotalSearchResults; 
    var topTenResults = results.Hits.Take(10); 

... 
} 

Чтобы получить более подробную информацию о Sitecore и LINQ вы можете смотреть this session и посмотреть на this repo.

+1

Эта тема также рассматривается в этом сообщении в блоге от команды Sitecore Dev - http://www.sitecore.net/Community/Technical-Blogs/Sitecore-7-Development-Team/Posts/2013/07/Sitecore- 7-Making-Google-Part-3.aspx –