Beispiel #1
0
        private async Task <SearchServiceResult> GetDataAsync(string search, int currentPage, int pageSize, string refinementFacets, bool newSearch)
        {
            refinementFacets = refinementFacets.Replace("'", "");
            refinementFacets = refinementFacets.Replace("\"", "");

            if (newSearch)
            {
                //clear out all facets for previous search
                _facets.Clear();
                refinementFacets = string.Empty;
            }

            var sp = new SearchParameters
            {
                IncludeTotalResultCount = true,
                Skip   = ((currentPage - 1) * pageSize),
                Top    = pageSize,
                Facets = new List <String> {
                    "syeInspectionCategories,count:100"
                }
            };

            //sp.Filter = "registrationStatus eq 'Registered'";
            if (!string.IsNullOrWhiteSpace(refinementFacets))
            {
                sp.QueryType = QueryType.Full;
                sp.Filter    = string.Concat(sp.Filter, "(", SearchHelper.BuildFilter(refinementFacets), ")");
            }

            var searchResult = await _indexClientWrapper.SearchAsync(search, sp).ConfigureAwait(false);

            if (searchResult.Facets?.Count == 1)
            {
                foreach (var item in searchResult?.Facets?.FirstOrDefault().Value?.Select(x => x.Value.ToString().Trim()))
                {
                    if (!_facets.Contains(item))
                    {
                        _facets.Add(item);
                    }
                }
            }

            var returnResults = new SearchServiceResult()
            {
                Count  = searchResult.Count ?? 0,
                Facets = _facets.OrderBy(o => o).ToList(),
                Data   = searchResult?.Results?.Select(x => SearchHelper.GetSearchResult(x.Document, (int )searchResult?.Results.IndexOf(x), currentPage))?.ToList() ?? new List <SearchResult>()
            };

            return(returnResults);
        }