public static async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log) { log.LogInformation("C# HTTP trigger function processed a request."); string q = req.Query["q"]; string top = req.Query["top"]; string suggester = req.Query["suggester"]; string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); dynamic data = JsonConvert.DeserializeObject(requestBody); q = q ?? data?.q; top = top ?? data?.top; suggester = suggester ?? data?.suggester; AutocompleteOptions options = new AutocompleteOptions() { Size = int.Parse(top) }; var response = await searchClient.AutocompleteAsync(q, suggester, options); var output = new Dictionary <string, List <AutocompleteItem> >(); output["suggestions"] = response.Value.Results.ToList(); return(new OkObjectResult(output)); }
public async Task GetsNewtonsoftJsonAutocompleteResults() { var result = await _target.AutocompleteAsync("newt"); Assert.True(result.TotalHits > 0); Assert.True(result.Data.Count > 0); Assert.Contains(result.Data, id => id == "Newtonsoft.Json"); }
public async Task <ActionResult> AutoCompleteAsync(string term) { InitSearch(); // Setup the autocomplete parameters. var ap = new AutocompleteOptions() { Mode = AutocompleteMode.OneTermWithContext, Size = 6 }; var autocompleteResult = await _searchClient.AutocompleteAsync(term, "sg", ap).ConfigureAwait(false); // Convert the autocompleteResult results to a list that can be displayed in the client. List <string> autocomplete = autocompleteResult.Value.Results.Select(x => x.Text).ToList(); return(new JsonResult(autocomplete)); }
/// <summary> /// Gets suggested query terms by calling <see cref="SearchClient.AutocompleteAsync(string, string, AutocompleteOptions, CancellationToken)"/>. /// </summary> /// <param name="cancellationToken">The token used to signal cancellation request.</param> public override async Task RunAsync(CancellationToken cancellationToken) { AutocompleteResults autocompleteResults = (await SearchClient.AutocompleteAsync(SearchText, SuggesterName, cancellationToken: cancellationToken)).Value; #if DEBUG Assert.AreEqual(1, autocompleteResults.Results.Count); Assert.AreEqual("historic", autocompleteResults.Results[0].Text); #endif }
public async Task <List <string> > AutoCompleteAndSuggestAsync(string term) { if (string.IsNullOrEmpty(term)) { return(new List <string>()); } // Setup the type-ahead search parameters. var ap = new AutocompleteOptions() { Mode = AutocompleteMode.OneTermWithContext, Size = 1, }; var autocompleteResult = await _searchclient.AutocompleteAsync(term, "sg", ap); // Setup the suggest search parameters. var sp = new SuggestOptions() { Size = 8, }; // Only one suggester can be specified per index. The name of the suggester is set when the suggester is specified by other API calls. // The suggester for the hotel database is called "sg" and simply searches the hotel name. var suggestResult = await _searchclient.SuggestAsync <Hotel>(term, "sg", sp).ConfigureAwait(false); // Create an empty list. var results = new List <string>(); if (autocompleteResult.Value.Results.Count > 0) { // Add the top result for type-ahead. results.Add(autocompleteResult.Value.Results[0].Text); } else { // There were no type-ahead suggestions, so add an empty string. results.Add(""); } for (int n = 0; n < suggestResult.Value.Results.Count; n++) { // Now add the suggestions. results.Add(suggestResult.Value.Results[n].Text); } return(results); }