Exemplo n.º 1
0
        public override SearchResult Transform(SearchQuery searchQuery, SearchResponse searchResponse, bool includeScore = false)
        {
            if (!(searchResponse is ElasticSearchResponse <CategoryDocument> 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 category = _categoryService.Get(elasticSearchResponse.Response.Hits.Select(x => x.Source.CategorySystemId));
                    var categoryLookup = includeScore ? elasticSearchResponse.Response.Hits.ToDictionary(x => x.Source.CategorySystemId, x => x.Score.GetValueOrDefault()) : null;

                    return category.Select(x => new CategorySearchResult
                    {
                        Item = x,
                        Id = x.SystemId,
                        Name = x.Localizations.CurrentUICulture.Name,
                        Url = _urlService.GetUrl(x),
                        Score = includeScore ? categoryLookup.TryGetValue(x.SystemId, out var dbl) ? (float)dbl : default : default
                    });
                }),
Exemplo n.º 2
0
        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 = _categorySearchService.Search(searchQuery);

            if (searchResponse == null)
            {
                return(null);
            }

            return(_categorySearchService.Transform(searchQuery, searchResponse, includeScore: includeScore));
        }
Exemplo n.º 3
0
        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))
            };
        }