问题描述
在根据Azure 认知服务的Search功能文档创建示例时(快速入门:在门户中创建演示应用(Azure 认知搜索))。完全相同的步骤,在中国区创建后下载Demo,查询结果一片空白:如下:
而真正期望的结果是显示所有匹配的结果:如下:
问题原因
通过打开浏览器开发者工具(F12),查看JS报错情况:发现Cognitive Search在执行Search的操作时候,发送的请求为https://lbsearcher01.search.windows.net/indexes/realestate-us-sample-index/docs?api-version=2020-06-30&search=* 而这是global的地址。而真正的中国区地址为:https://lbsearcher01.search.azure.cn/indexes/realestate-us-sample-index/docs?api-version=2020-06-30&search=*。
所以进一步查看AzSearch.js的SDK为什么会产生的地址为Global,而非China Azure,在JS文件中,发现其中一段是Hard Code写死为.search.windows.net。如下图:
解决办法
综上所述:发现该问题的根本原因是因为微软AzSearch的JS SDK Hard Code的原因,在下载AzSearch.bundle.js到本地后,使用.search.azure.cn 替换.search.windows.net即可。
修改后,加载本地的AzSearch.bundle.js文件,Search Demo即可正常运行。
参考资料
快速入门:在门户中创建演示应用(Azure 认知搜索): https://docs.microsoft.com/zh-cn/azure/search/search-create-app-portal
AzSearch.bundle.js:https://cdn.jsdelivr.net/npm/azsearch.js@0.0.21/dist/AzSearch.bundle.js