Exemplo n.º 1
0
        public override SearchResponse Search(SearchQuery searchQuery)
        {
            if (!_searchClientService.IsConfigured)
            {
                return(_parent.Search(searchQuery));
            }
            var assortmentSystemId = _requestModelAccessor.RequestModel.ChannelModel?.Channel?.MarketSystemId?.MapTo <MarketModel>()?.Market?.AssortmentSystemId;
            var fuzziness          = searchQuery.Text.Length > 2 ? Fuzziness.EditDistance(2) : Fuzziness.Auto;

            return(new ElasticSearchResponse <CategoryDocument>(_searchClientService
                                                                .Search <CategoryDocument>(CultureInfo.CurrentUICulture, selector => selector
                                                                                           .From((searchQuery.PageNumber - 1) * searchQuery.PageSize)
                                                                                           .Size(searchQuery.PageSize)
                                                                                           .QueryWithPermission(q =>
                                                                                                                q.PublishedOnChannel() &&
                                                                                                                q.Bool(b => b.Must(bf => bf.Term(t => t.Field(x => x.Assortment).Value(assortmentSystemId)))) &&
                                                                                                                OrganizationPointer(q) &&
                                                                                                                (
                                                                                                                    q.Match(x => x.Field(z => z.Name).Query(searchQuery.Text).Fuzziness(fuzziness).Boost(2).SynonymAnalyzer()) ||
                                                                                                                    q.Match(x => x.Field(z => z.Content).Query(searchQuery.Text).Fuzziness(fuzziness).SynonymAnalyzer())
                                                                                                                ))
                                                                                           .Source(x => x.Includes(z => z.Fields(p => p.CategorySystemId)))
                                                                                           )
                                                                ));
        }
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))
            };
        }