我已经能够为 SP13 人员搜索创建自定义结果源,如下所示:
var fedManager = new FederationManager(application);
var owner = new SearchObjectOwner(SearchObjectLevel.SPSite, site.RootWeb);
var peopleSource = fedManager.GetSourceByName(Consts.ResultSources.PeopleSource, owner);
QueryTransformProperties queryProperties = new QueryTransformProperties();
SortCollection sortCollection = new SortCollection();
sortCollection.Add("PreferredName", SortDirection.Ascending);
queryProperties["SortList"] = sortCollection;
var currentResultSource = fedManager.CreateSource(owner);
currentResultSource.Name = sourceName;
currentResultSource.ProviderId = fedManager.ListProviders()["Local SharePoint Provider"].Id;
currentResultSource.CreateQueryTransform(queryProperties, "{?{searchTerms} ContentClass=urn:content-class:SPSPeople}");
currentResultSource.Commit();
这工作得很好,但我仍然必须在类型部分手动设置“人物搜索结果”而不是默认的“SharePoint 搜索结果”。我可以以编程方式进行吗?谢谢你。