#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
This commit is contained in:
piedone@pyrocenter.hu
2012-06-08 16:24:51 +02:00
parent 2b4495cf22
commit 75819e862c

View File

@@ -46,7 +46,7 @@ namespace Orchard.Search.Controllers {
dynamic Shape { get; set; } dynamic Shape { get; set; }
public ActionResult Index(PagerParameters pagerParameters, string q = "") { 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<SearchSettingsPart>().SearchedFields; var searchFields = Services.WorkContext.CurrentSite.As<SearchSettingsPart>().SearchedFields;
IPageOfItems<ISearchHit> searchHits = new PageOfItems<ISearchHit>(new ISearchHit[] { }); IPageOfItems<ISearchHit> searchHits = new PageOfItems<ISearchHit>(new ISearchHit[] { });
@@ -62,15 +62,13 @@ namespace Orchard.Search.Controllers {
} }
var list = Shape.List(); var list = Shape.List();
foreach (var contentItem in searchHits.Select(searchHit => _contentManager.Get(searchHit.ContentItemId))) { var foundIds = searchHits.Select(searchHit => searchHit.ContentItemId);
// ignore search results which content item has been removed or unpublished // ignore search results which content item has been removed or unpublished
if(contentItem == null){ var foundItems = _contentManager.GetMany<IContent>(foundIds, VersionOptions.Published, new QueryHints());
searchHits.TotalItemCount--; foreach (var contentItem in foundItems) {
continue;
}
list.Add(_contentManager.BuildDisplay(contentItem, "Summary")); list.Add(_contentManager.BuildDisplay(contentItem, "Summary"));
} }
searchHits.TotalItemCount -= foundIds.Count() - foundItems.Count();
var pagerShape = Shape.Pager(pager).TotalItemCount(searchHits.TotalItemCount); var pagerShape = Shape.Pager(pager).TotalItemCount(searchHits.TotalItemCount);