private static SearchParameters BuildParameters(SearchQueryBuilder queryBuilder) { SearchParameters parameters = new SearchParameters { Top = queryBuilder.HitsPerPage, Skip = queryBuilder.PageNumber * queryBuilder.HitsPerPage, SearchMode = queryBuilder.SearchModeParam, QueryType = queryBuilder.QueryTypeParam }; if (queryBuilder.ScoreProfile != null) { parameters.ScoringProfile = queryBuilder.ScoreProfile; } if (queryBuilder.Refinements.Count > 0) { StringBuilder filter = new StringBuilder(); string separator = string.Empty; foreach (var entry in queryBuilder.Refinements) { foreach (string value in entry.Value) { filter.Append(separator); filter.Append($"{entry.Key} eq '{EscapeFilterString(value)}'"); separator = " and "; } } parameters.Filter = filter.ToString(); } return(parameters); }
public async Task <GenericSearchResult> SearchAsync(SearchQueryBuilder queryBuilder) { if (queryBuilder.ScoreProfile == null && defaultScoreProfile != "") { queryBuilder.ScoreProfile = defaultScoreProfile; } var documentSearchResult = await this.searchClient.Documents.SearchAsync(queryBuilder.SearchText, BuildParameters(queryBuilder)); return(this.mapper.Map(documentSearchResult)); }