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))) ) )); }
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)); }
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)) }; }