JSOM中设置搜索查询结果源级别为SPSite无效,该参数是否合法?
问题解答
你遇到的问题根源在于:'SPSite'并不是JSOM中设置结果源级别时的有效参数值。
在SharePoint JSOM的搜索API里,SourceLevel对应的是Microsoft.Office.Server.Search.Query.SourceLevel枚举类型,当你通过KeywordQuery.Properties设置这个属性时,需要传入枚举对应的数字值,而不是枚举成员的字符串名称。
枚举值与级别对应关系:
SPWeb(网站级别):0SPSite(网站集级别):1SPSiteSubscription(租户级别):2SearchService(服务应用级别):3
你之前设置'SPSiteSubscription'能生效其实是个意外——实际上正确的做法是传入数字2,字符串值本身并不是合法参数,可能是某些环境下的兼容行为导致它偶然生效了。
修正后的代码示例:
let query = new Search.KeywordQuery(ctx); // 设置结果源名称 query.get_properties().set_item('SourceName', 'Result Source Name'); // 设置网站集级别结果源,使用数字1而非字符串'SPSite' query.get_properties().set_item('SourceLevel', 1);
另外补充一点:如果想避免硬编码数字、让代码更易读,可以直接引用JSOM提供的枚举对象(前提是页面已加载sp.search.js等搜索脚本依赖):
query.get_properties().set_item('SourceLevel', Microsoft.Office.Server.Search.Query.SourceLevel.SPSite);
内容的提问来源于stack exchange,提问作者Damitha
相关产品推荐
相关产品推荐

