Получите фактическое количество совпадений в поиске Azure

Поиск Azure возвращает не более 1000 результатов за раз. Для пейджинга на клиенте мне нужно общее количество совпадений, чтобы иметь возможность отображать правильное количество кнопок пейджинга внизу и чтобы иметь возможность сообщить пользователю, сколько там результатов находятся. Однако, если их более тысячи, как мне получить фактическое количество? Все, что я знаю, это то, что было минимум 1000 совпадений.

Мне нужно иметь возможность сделать это из SDK.


person birdus    schedule 02.11.2017    source источник


Ответы (2)


Если вы хотите получить общее количество документов в индексе, вы можете установить IncludeTotalResultCount на true в параметрах поиска. После этого при выполнении запроса вы увидите общее количество документов в индексе в Count результатов поиска.

Вот пример кода для этого:

        var credentials = new SearchCredentials("account-key (query or admin key)");
        var indexClient = new SearchIndexClient("account-name", "index-name", credentials);
        var searchParameters = new SearchParameters()
        {
            QueryType = QueryType.Full,
            IncludeTotalResultCount = true
        };
        var searchResults = await indexClient.Documents.SearchAsync("*", searchParameters);
        Console.WriteLine("Total documents in index (approx) = " + searchResults.Count.GetValueOrDefault());//Prints the total number of documents in the index

Обратите внимание, что:

  • Этот счет будет приблизительным.
  • Получение подсчета — дорогостоящая операция, поэтому вы должны делать это только с самым первым запросом при реализации разбивки на страницы.
person Gaurav Mantri    schedule 03.11.2017
comment
Спасибо за совет использовать его только на первой странице результатов. У меня будет просто IncludeTotalResultCount = skip == 0. - person birdus; 03.11.2017
comment
На случай, если другие столкнутся с той же проблемой, имя параметра было изменено на includeTotalCount с версии 11.0.0 (согласно журналу изменений). Что касается этого комментария, большинство примеров, которые я вижу, показывают старое имя параметра, которое возвращало значение undefined для подсчета (по крайней мере, с версии 11.0.3). - person jpb; 14.09.2020

Для клиентов REST, использующих POST API, просто включите "count": "true" в полезную нагрузку. Вы получаете счет в @odata.count.

Ссылка: https://docs.microsoft.com/en-us/rest/api/searchservice/search-documents

person arun    schedule 18.02.2020