From 75819e862cba4de302fbfc7ce0c95356af47c2ff Mon Sep 17 00:00:00 2001 From: "piedone@pyrocenter.hu" Date: Fri, 8 Jun 2012 16:24:51 +0200 Subject: [PATCH] #18617: Speeding up search results list Work Item: 18617 --HG-- branch : 1.x extra : transplant_source : Q%04%28g%BC%86%D1%B8q%7D%E1%FB%CF%097v%A0%A8%D0L --- .../Orchard.Search/Controllers/SearchController.cs | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.Search/Controllers/SearchController.cs b/src/Orchard.Web/Modules/Orchard.Search/Controllers/SearchController.cs index 996eca8f1..57a97b941 100644 --- a/src/Orchard.Web/Modules/Orchard.Search/Controllers/SearchController.cs +++ b/src/Orchard.Web/Modules/Orchard.Search/Controllers/SearchController.cs @@ -46,7 +46,7 @@ namespace Orchard.Search.Controllers { dynamic Shape { get; set; } public ActionResult Index(PagerParameters pagerParameters, string q = "") { - Pager pager = new Pager(_siteService.GetSiteSettings(), pagerParameters); + var pager = new Pager(_siteService.GetSiteSettings(), pagerParameters); var searchFields = Services.WorkContext.CurrentSite.As().SearchedFields; IPageOfItems searchHits = new PageOfItems(new ISearchHit[] { }); @@ -62,15 +62,13 @@ namespace Orchard.Search.Controllers { } var list = Shape.List(); - foreach (var contentItem in searchHits.Select(searchHit => _contentManager.Get(searchHit.ContentItemId))) { - // ignore search results which content item has been removed or unpublished - if(contentItem == null){ - searchHits.TotalItemCount--; - continue; - } - + var foundIds = searchHits.Select(searchHit => searchHit.ContentItemId); + // ignore search results which content item has been removed or unpublished + var foundItems = _contentManager.GetMany(foundIds, VersionOptions.Published, new QueryHints()); + foreach (var contentItem in foundItems) { list.Add(_contentManager.BuildDisplay(contentItem, "Summary")); } + searchHits.TotalItemCount -= foundIds.Count() - foundItems.Count(); var pagerShape = Shape.Pager(pager).TotalItemCount(searchHits.TotalItemCount);