Пример #1
0
        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));
        }
Пример #2
0
        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");
        }
Пример #3
0
        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));
        }
Пример #4
0
        /// <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
        }
Пример #5
0
        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);
        }