AzureSearchSDK возвращает разные результаты, чем тестирование портала - PullRequest
0 голосов
/ 05 февраля 2019

При использовании функции SearchAsync из AzureSearch .NET SDK, помещающей строку запроса в кодировке, содержащую знаки UTF8, я получил нулевой ответ, записи не найдены.После изучения Фидлера я знаю, что запрос POST отправляется службе поиска Azure:

url: /indexes('[INDEX_NAME]'/docs/search.post.search?api-version=2017-11-11 HTTP / 1.1

body:

{
"count": false,
 "facets": [],
 "filter": "search.ismatch('6','CataloguesIds')",
 "queryType": "full",
 "scoringParameters": [],
 "search": "pier%C5%9Bcionek*",
 "searchMode": "any",
 "select": "Id,Name"
 }

Тот же запрос, отправленный порталом Azure, возвращает правильные результаты, хотя Фидлер показывает, что в портале используется метод GET

url:/indexes/products-index/docs?api-version=2017-11-11&search=pier%C5%9Bcionek*.

Что мне нужно сделать, чтобы получить такой же ответ из AzureSearch SDK, как и на портале, для запросов, содержащихЗнаки UTF8? Для запроса без знаков UTF8 метод SearchAsync возвращает правильные результаты.

1 Ответ

0 голосов
/ 05 февраля 2019

Вы должны ожидать, что результаты будут одинаковыми между проводником запросов на портале Azure и использованием API напрямую.

В этом случае два запроса, которые вы включили выше, различаются.Запрос POST включает в себя и условие поиска, и предложение фильтра, в то время как запрос GET содержит только условие поиска.Возможно, в индексе нет документов, удовлетворяющих обоим условиям, сформулированным в запросе POST, что приводит к пустым результатам?

Кроме того, для тела запроса POST не следует кодировать значения URL.Тело должно быть правильным документом JSON (включая правильную кодировку символов) без дополнительной кодировки.

...