如何通过SharePoint搜索API按术语库/术语集查询文档?
你要实现的需求可以通过SharePoint的搜索REST API端点/_api/search/query来完成,核心是要针对托管元数据字段使用正确的查询语法,下面给你详细说明:
关键细节解释
- 托管元数据字段在搜索中的内部命名规则是
owstaxId[术语集内部名称],如果术语集名称包含空格,需要替换为x0020(比如你的场景里对应的字段标识是owstaxIdPositionx0020) - 查询文本格式为
'owstaxId[字段标识]:[术语值]',这里要匹配“Defender”术语,所以就是'owstaxIdPositionx0020:defender' - 额外参数
trimduplicates=true可以自动去除重复结果,rowsperpage和rowlimit用来控制单次返回的文档数量上限
修正后的完整代码
public getDocuments() { axios .get("https://bpk.sharepoint.com/_api/search/query?querytext='owstaxIdPositionx0020:defender'&trimduplicates=true&rowsperpage=100&rowlimit=1000", { params:{}, headers: { 'accept': 'application/json;odata=verbose' } }) .then(response => { // 注意搜索API的返回结构和普通列表API不同,需要从这个路径提取结果 this.setState({ documents: response.data.d.query.PrimaryQueryResult.RelevantResults.Table.Rows.results }); }) .catch(error => { console.log(error); }); }
小提示:如果你的术语集内部名称不是Positionx0020,需要替换成你实际的托管元数据字段搜索别名——可以通过SharePoint管理中心查看字段内部名称,或者用浏览器开发者工具抓包列表视图的请求来确认正确的字段标识。
内容的提问来源于stack exchange,提问作者BennKingy
相关产品推荐
相关产品推荐

