azure - AzureSearchSDK 返回的结果与门户测试不同
问题描述
在使用 AzureSearch .NET SDK 中的 SearchAsync 函数输入包含 UTF8 符号的查询编码字符串时,我得到了空响应,但没有找到任何记录。在对 Fiedler 进行调查后,我知道 POST 请求被发送到 azure search 服务:
url: /indexes('[INDEX_NAME]'/docs/search.post.search?api-version=2017-11-11 HTTP/1.1
身体:
{
"count": false,
"facets": [],
"filter": "search.ismatch('6','CataloguesIds')",
"queryType": "full",
"scoringParameters": [],
"search": "pier%C5%9Bcionek*",
"searchMode": "any",
"select": "Id,Name"
}
Azure 门户发送的相同请求会返回正确的结果。虽然 Fiedler 表明在门户中使用的方法是 GET
网址:/indexes/products-index/docs?api-version=2017-11-11&search=pier%C5%9Bcionek*。
对于包含 UTF8 符号的查询,我应该怎么做才能从 AzureSearch SDK 获得与门户中相同的响应?对于没有 UTF8 符号的请求,SearchAsync 方法返回正确的结果。
解决方案
您应该期望 Azure 门户中的查询资源管理器和直接使用 API 的结果相同。
在这种情况下,您上面包含的两个查询是不同的。POST 查询包括搜索子句和过滤子句,而 GET 请求只有搜索子句。也许索引中没有满足 POST 查询中制定的两个条件的文档,导致结果为空?
此外,对于 POST 请求的正文,您不应对值进行 URL 编码。正文需要是正确的 JSON 文档(包括考虑正确的字符编码),无需额外编码。
推荐阅读
- c# - C# ASP.NET Core 2.1 Linux NTLM Apache 2.2 - 获取用户名?
- alert - 将 pine 脚本策略转换为学习
- odoo - Odoo 错误渲染编译 AST,UndefinedTable
- python - pandas 客户表 >> 将边添加到节点列和 deltatimes
- javascript - 使用 let 关键字在块内重新声明变量并在它之前访问但给出错误
- powershell - Powershell 脚本并输出到文件共享
- java - Activity 对 Android 中的通信进行分段
- html - CSS中的网格系统
- javascript - React Native FlatList 中的 JSON
- css - 动画翻译无法正常工作