public async Task<ActionResult> IndexPost([Bind(Prefix = "SearchRequest")]SearchRequest searchRequest) { string serviceName = ConfigurationManager.AppSettings["AzureSearch:ServiceName"]; string primaryApiKey = ConfigurationManager.AppSettings["AzureSearch:ApiKey"]; using (var apicConnection = ApiConnection.Create(serviceName, primaryApiKey)) { var queryClient = new IndexQueryClient(apicConnection); var query = new SearchQuery(searchRequest.SearchTerm) .Filter(string.Format("Year gt {0} and Year lt {1}", searchRequest.YearStart, searchRequest.YearEnd)) .Facet("Year") .Top(100); IApiResponse<SearchQueryResult> searchResults = await queryClient.SearchAsync("movies", query); var movies = searchResults.Body.Records.Select(x => new MovieResult { Id = x.Properties["Id"].ToString(), Title = x.Properties["Name"].ToString(), Year = int.Parse(x.Properties["Year"].ToString()), Rating = double.Parse(x.Properties["Rating"].ToString()), ImageUrl = x.Properties["Image"].ToString(), Url = x.Properties["Url"].ToString(), Episode = x.Properties["Episode"] != null ? x.Properties["Episode"].ToString() : null }); KeyValuePair<string, FacetResult[]> yearFacet = searchResults.Body.Facets.FirstOrDefault(); return View(new HomeViewModel { Movies = movies, SearchRequest = searchRequest, Facets = (yearFacet.Value != null) ? yearFacet.Value.ToDictionary(x => x.Value, x => x.Count) : new Dictionary<string, long>() }); } }
public static async Task<IApiResponse<SearchQueryResult>> Search(string search) { var conn = ApiConnection.Create(Keys.ListingsServiceUrl, Keys.ListingsServiceKey); var queryClient = new IndexQueryClient(conn); var query = new SearchQuery(search) .Count(true) .Select("Id,Color,Options,Type,Package,Image") .OrderBy("Color") .Highlight("Package"); var searchResults = await queryClient.SearchAsync(Keys.ListingsServiceIndexName, query); return searchResults; }