AzureSearchSDK返回的结果不同于门户网站测试

时间:2019-02-05 11:50:45

标签: azure utf-8 azure-search

虽然使用AzureSearch .NET SDK中的SearchAsync函数将包含UTF8标志的查询编码字符串放入响应为空,但未找到任何记录。在对Fiedler进行调查之后,我知道POST请求已发送到azure搜索服务:

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

正文:

const accountSid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
const authToken = 'your_auth_token';
const client = require('twilio')(accountSid, authToken);

client.applications
      .create({
         voiceMethod: 'GET',
         voiceUrl: 'http://demo.twilio.com/docs/voice.xml',
         friendlyName: 'Phone Me'
       })
      .then(application => console.log(application.sid))
      .done();

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

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

对于包含UTF8标志的查询,我应该怎么做才能从AzureSearch SDK获得与门户相同的响应?对于没有UTF8标志的请求,SearchAsync方法将返回正确的结果。

1 个答案:

答案 0 :(得分:1)

您应该期望Azure门户中的查询浏览器与直接使用API​​的结果相同。

在这种情况下,您上面包含的两个查询是不同的。 POST查询同时包含搜索子句和过滤器子句,而GET请求仅包含搜索子句。也许索引中没有文档满足POST查询中制定的两个条件,从而导致结果为空?

此外,对于POST请求的正文,您不应使用URL编码值。正文必须是正确的JSON文档(包括正确的字符编码),并且没有其他编码。