private IEnumerable <SubNavigationLinkModel> GetNewsChildLinks(Page rootPage) { var searchQuery = _requestModelAccessor.RequestModel.SearchQuery.Clone(); searchQuery.PageSize = 5; searchQuery.PageNumber = 1; searchQuery.PageType = PageTemplateNameConstants.NewsList; searchQuery.PageSystemId = rootPage.SystemId; var searchResponse = _pageSearchService.Search(searchQuery); var searchResult = _pageSearchService.Transform(searchQuery, searchResponse); if (searchResult == null || searchResult.Total < 1) { return(new List <SubNavigationLinkModel>()); } return(_pageService.Get(searchResult.Items.Value.Select(x => x.Id).ToList()) .Where(p => p.IsActive(_channel.SystemId)) .Select(child => new SubNavigationLinkModel { Name = child.Localizations.CurrentCulture.Name, Url = _urlService.GetUrl(child), IsSelected = _currentSelectedPageId == child.SystemId }) .ToList()); }
public override SearchResult Transform(SearchQuery searchQuery, SearchResponse searchResponse, bool includeScore = false) { if (!(searchResponse is ElasticSearchResponse <PageDocument> elasticSearchResponse)) { return(_parent.Transform(searchQuery, searchResponse, includeScore)); } return(new SearchResult { Items = new Lazy <IEnumerable <SearchResultItem> >(() => { IoC.Resolve <TargetGroupEngine>().Process(new SearchEvent { SearchText = searchQuery.Text, TotalHits = searchResponse.TotalHitCount }); var pages = _pageService.Get(elasticSearchResponse.Response.Hits.Select(x => x.Source.PageSystemId)); var pageLookup = includeScore ? elasticSearchResponse.Response.Hits.ToDictionary(x => x.Source.PageSystemId, x => x.Score.GetValueOrDefault()) : null; return pages.Select(x => new PageSearchResult { Item = x, Id = x.SystemId, Name = x.Localizations.CurrentUICulture.Name, Url = _urlService.GetUrl(x), Score = includeScore ? pageLookup.TryGetValue(x.SystemId, out var dbl) ? (float)dbl : default : default }); }),
public override SearchResult QueryCompact(string query, bool includeScore = false) { var searchQuery = _requestModelAccessor.RequestModel.SearchQuery.Clone(); searchQuery.Text = query; searchQuery.PageNumber = 1; searchQuery.PageSize = PageSize; var searchResponse = _pageSearchService.Search(searchQuery, onlyBrands: OnlyBrands); if (searchResponse == null) { return(null); } return(_pageSearchService.Transform(searchQuery, searchResponse, includeScore: includeScore)); }
private void BuildOtherSearchResult(SearchResultViewModel searchResult, SearchQuery searchQuery) { var p = searchQuery.PageSize; searchQuery.PageNumber = 1; searchQuery.PageSize = 100; var searchResponse = _pageSearchService.Search(searchQuery); var pageSearchResult = searchResponse != null?_pageSearchService.Transform(searchQuery, searchResponse, true) : null; searchResponse = _categorySearchService.Search(searchQuery); var categorySearchResult = searchResponse != null?_categorySearchService.Transform(searchQuery, searchResponse, true) : null; searchQuery.PageSize = p; searchResult.OtherSearchResult = new SearchResult { PageSize = 100, Total = (pageSearchResult?.Total ?? 0) + (categorySearchResult?.Total ?? 0), Items = new Lazy <IEnumerable <SearchResultItem> >(() => (pageSearchResult == null ? new SearchResultItem[0] : pageSearchResult.Items.Value).Concat(categorySearchResult == null ? new SearchResultItem[0] : categorySearchResult.Items.Value).OrderByDescending(x => x.Score)) }; }