mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
#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:
@@ -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);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user