#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; }
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;
IPageOfItems<ISearchHit> searchHits = new PageOfItems<ISearchHit>(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<IContent>(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);