MS Graph聚合查询时拼写修正失效,如何调整请求?
解决MS Graph /search/query聚合与拼写检查兼容问题
问题原因
当请求包含aggregations配置时,MS Graph的拼写修正仅会在返回结果中给出修正建议,但不会自动将修正后的查询应用到聚合计算逻辑中。聚合仍基于原始错误查询(如"inspring")执行,自然返回0条结果。
解决步骤
1. 先获取拼写修正后的查询内容
发送不带聚合配置的搜索请求,从响应的queryContext字段里提取alteredQuery(即系统修正后的正确查询字符串)。
示例请求:
POST https://graph.microsoft.com/v1.0/search/query Content-Type: application/json { "requests": [ { "entityTypes": ["listItem"], "query": { "queryString": "inspring" }, "enableSpellCheck": true } ] }
响应中会包含修正后的查询信息:
"queryContext": { "originalQuery": "inspring", "alteredQuery": "inspiring", "alterationType": "Spelling" }
2. 用修正后的查询发起带聚合的请求
将第一步得到的alteredQuery作为新的查询字符串,搭配聚合配置发送请求,此时聚合会基于修正后的正确查询执行,同时拼写修正提示也会保留在响应中。
示例请求:
POST https://graph.microsoft.com/v1.0/search/query Content-Type: application/json { "requests": [ { "entityTypes": ["listItem"], "query": { "queryString": "inspiring" }, "enableSpellCheck": true, "aggregations": [ { "field": "createdBy.displayName", "size": 5, "bucketDefinition": { "type": "terms" } } ] } ] }
额外说明
如果需要在前端展示拼写修正提示,可保留第一步响应中的修正信息,同时用修正后的查询获取聚合和结果数据,实现两个功能的兼容。
内容的提问来源于stack exchange,提问作者T_J
相关产品推荐
相关产品推荐

