private static async Task <SearchResult <IIndexEntity> > Search <T>(Models.DTO.Search search, string environment, IFilterManager fm, IAzureSearch <T> client, string minimumCriteria, string[] freetextFields) where T : class, IIndexEntity { fm.Init(search.SearchQuery.Filters); var selected = fm.GetSelectedFilters(); var query = search.SearchQuery.SearchTerm; if (IsAllDigits(query)) { query = RemoveWhiteSpaces(query); } var filters = CreateAndFilter(selected, minimumCriteria); var result = await client.SearchWithFullResult(query, filters, true, search.SearchParameters.OrderBy?.ToArray(), search.SearchParameters.NumberPerPage, search.SearchParameters.GetSkipCount(), searchFields : freetextFields); var resultObject = new SearchResult <IIndexEntity>() { SearchParameters = search.SearchParameters, Documents = result.Results.Select(x => x.Document) }; resultObject.SearchParameters.TotalCount = (int)result.Count; return(resultObject); }
public virtual async Task <SearchResult <IIndexEntity> > BusinessSearch([FromBody] Models.DTO.Search search, string environment) { return(await Search(search, environment, _businessFilterManager, _busIndex, _minimumCriteriaForBusiness, _freetextPropertiesForBusiness)); }
public virtual async Task <SearchResult <IIndexEntity> > PersonSearch([FromBody] Models.DTO.Search search, string environment) { return(await Search(search, environment, _personFilterManager, _personIndex, _minimumCriteriaForPerson, _freetextPropertiesForPerson)); }