AzureSearchSDK返回与门户测试不同的结果

AzureSearchSDK返回与门户测试不同的结果,azure,utf-8,azure-cognitive-search,Azure,Utf 8,Azure Cognitive Search,当使用AzureSearch.NETSDK中的SearchAsync函数输入包含UTF8符号的查询编码字符串时,我得到了空响应,未找到任何记录。在对Fiedler进行调查后,我知道POST请求已发送到azure搜索服务: 网址: /索引(“[INDEX_NAME]”/docs/search.post.search?api版本=2017-11-11 HTTP/1.1 正文: Azure门户发送的相同请求返回正确的结果。尽管Fiedler显示门户中使用的方法是GET url:/index/produ

当使用AzureSearch.NETSDK中的SearchAsync函数输入包含UTF8符号的查询编码字符串时,我得到了空响应,未找到任何记录。在对Fiedler进行调查后,我知道POST请求已发送到azure搜索服务:

网址: /索引(“[INDEX_NAME]”/docs/search.post.search?api版本=2017-11-11 HTTP/1.1

正文:

Azure门户发送的相同请求返回正确的结果。尽管Fiedler显示门户中使用的方法是GET

url:/index/products index/docs?api版本=2017-11-11&搜索=pier%C5%9Bcionek*


对于包含UTF8符号的查询,我应该如何从AzureSearch SDK获得与门户中相同的响应?对于不包含UTF8符号的请求,SearchAsync方法将返回正确的结果。

您应该期望Azure门户中的查询资源管理器和直接使用API之间的结果相同

在这种情况下,您上面包含的两个查询是不同的。POST查询同时包含一个搜索子句和一个筛选子句,而GET请求只有一个搜索子句。可能索引中没有满足POST查询中规定的这两个条件的文档,从而导致空结果


此外,对于POST请求的正文,您不应该对值进行URL编码。正文需要是一个正确的JSON文档(包括正确的字符编码),无需额外编码。

谢谢您的回答,我最终发现这不是过滤的问题,在数据集中有两个匹配的记录(筛选和搜索)条件。若要从POST中获得正确的结果,在使用波兰Microsoft Analyzer时,您不应事先对查询进行编码。例如,它应该是pierścionek,而不是pier%C5%9bCionek。没错,很抱歉,我从您的原始示例中漏掉了这一点,我会将其添加到答案中以使其完整。
{
"count": false,
 "facets": [],
 "filter": "search.ismatch('6','CataloguesIds')",
 "queryType": "full",
 "scoringParameters": [],
 "search": "pier%C5%9Bcionek*",
 "searchMode": "any",
 "select": "Id,Name"
 }