Как исправить проблему с производительностью в поиске Azure

Я реализую поиск Azure в своем приложении, чтобы обеспечить функцию автозаполнения, такую ​​как Google, Big и Amazon. Я реализовал тот же самый доступный код github, используя приведенный ниже URL. Все работает нормально, но получая результат более чем за 1,5 секунды для каждого термина предложения. https://github.com/Azure-Samples/search-dotnet-getting-started/tree/master/DotNetHowToAutocomplete

В настоящее время я использую два индекса для поиска и создан на базовом уровне. Ниже код

 public ActionResult Suggest(bool highlights, bool fuzzy, string term)
    {
        InitSearch();

        // Call suggest API and return results
        SuggestParameters sp = new SuggestParameters()
        {
            UseFuzzyMatching = fuzzy,
            Top = 5,
            Filter="name eq 'testid'",
            OrderBy=new List<string>() { "Date desc"}

        };


         if (highlights)
        {
            sp.HighlightPreTag = "<b>";
            sp.HighlightPostTag = "</b>";
        }
        DocumentSuggestResult suggestResult = _indexClient1.Documents.Suggest(term, "index1",sp);
        if (suggestResult.Results.Count<5)
        {

            SuggestParameters sp2 = new SuggestParameters()
            {
                UseFuzzyMatching = fuzzy,
                Top = 5- suggestResult.Results.Count,
                Filter = "Product eq 'PAAS'",
                OrderBy = new List<string>() { "Count desc" }

            };
            if (highlights)
            {
                sp2.HighlightPreTag = "<b>";
                sp2.HighlightPostTag = "</b>";
            }
            DocumentSuggestResult suggestResult2= _indexClient2.Documents.Suggest(term, "index2", sp2);
            suggestResult.Results = suggestResult.Results.Union(suggestResult2.Results).Distinct().ToList();
           // final = suggestResult.Results.GroupBy(s => s.Text, StringComparer.CurrentCultureIgnoreCase).ToList();
        }


        // Convert the suggest query results to a list that can be displayed in the client.
        List<string> suggestions = suggestResult.Results.Select(x => x.Text).Distinct().ToList();

        return new JsonResult
        {
            JsonRequestBehavior = JsonRequestBehavior.AllowGet,
            Data = suggestions
        };
    }

Чтобы проверить это - когда я набираю какое-либо слово, заполнение результатов занимает от 1,5 до 1,8 секунд, это работает как поисковое окно другого веб-приложения.

Сроки я проверяю с помощью элемента проверки браузера Chrome. Прикрепление скриншота. смотреть скриншот

Пожалуйста, предложите.

1 ответ

Решение

Я ответил на аналогичный вопрос в другом посте: почему Поиск Azure занимает 1400 мсек, чтобы вернуть результаты запроса для простого запроса

Главное, чтобы вы не использовали таймер Chrome для измерения производительности поиска по лазури. Используйте поле "истекшее время" в полученном HTTP-ответе (в среднем по нескольким вызовам), поскольку оно точно показывает, сколько времени было потрачено на получение результатов поиска Azure. Таймер Chrome может зависеть от конфигурации вашей сети / машины. Если это не поможет, вы можете следовать другим советам, которые я предложил в посте, который я связал выше.

Другие вопросы по тегам