扩展人物搜索,自定义结果源
Extend people search, custom result source
我根据 "Local SharePoint Results" 创建了一个自定义结果源,我在其中使用了这个 "Query Transform"
{?(({searchTerms}) ContentClass=urn:content-class:SPSPeople)}
{?OR (({searchTerms}) spcontenttype:contact)}
我的搜索结果有效,我得到了 sppeople 和联系人。
我想不通的是为什么 spspeople 对象在搜索结果中显示为网站。在调试时我注意到它确实返回了一个 sppeople 内容 class。
我希望它呈现为 "normal" 带有图片等的人物对象。
1.I 复制了 control_searchresults 显示模板。并将此代码包含在函数中(使用标题作为首选名称,并且首选名称用于人员项目显示):
var peopleTable = ctx.ListData.ResultTables.filter(function( table ) {
return table.TableType == "RelevantResults";
});
if( $isEmptyArray(peopleTable) ) return;
if(!$isEmptyArray(peopleTable)) {
for (var i=0, item; item = peopleTable[0].ResultRows[i]; i++) {
item.PreferredName = item.Title;
}
- 在人物搜索 web 部件中选择将其用作显示模板。
3.In Web 部件:"Use a single template to display items" 并选择了 "People item"。
我根据 "Local SharePoint Results" 创建了一个自定义结果源,我在其中使用了这个 "Query Transform"
{?(({searchTerms}) ContentClass=urn:content-class:SPSPeople)}
{?OR (({searchTerms}) spcontenttype:contact)}
我的搜索结果有效,我得到了 sppeople 和联系人。 我想不通的是为什么 spspeople 对象在搜索结果中显示为网站。在调试时我注意到它确实返回了一个 sppeople 内容 class。
我希望它呈现为 "normal" 带有图片等的人物对象。
1.I 复制了 control_searchresults 显示模板。并将此代码包含在函数中(使用标题作为首选名称,并且首选名称用于人员项目显示):
var peopleTable = ctx.ListData.ResultTables.filter(function( table ) {
return table.TableType == "RelevantResults";
});
if( $isEmptyArray(peopleTable) ) return;
if(!$isEmptyArray(peopleTable)) {
for (var i=0, item; item = peopleTable[0].ResultRows[i]; i++) {
item.PreferredName = item.Title;
}
- 在人物搜索 web 部件中选择将其用作显示模板。
3.In Web 部件:"Use a single template to display items" 并选择了 "People item"。