在 SharePoint 2013 的搜索中使用用户上下文(AKA 分段)

原文发布于 2012 年 12 月 3 日(星期一)

使用上下文表示搜索中的当前用户是我们最初在 FAST Search for SharePoint 2010 中引入的功能。如果您对它的工作原理感兴趣,则可以阅读以下文章:https://blogs.technet.com/b/speschka/archive/2009/12/09/using-custom-properties-to-create-a-fast-search-for-sharepoint-2010-user-context.aspx。在 SharePoint 2013 中,我们没有完全相同的功能,但是我们必须使用称为“用户分段”的功能来替代它。现在,我不会尝试说明用户区段的概念和工作原理,因为搜索团队中已经有人在以下文章中出色地完成了这个任务:https://blogs.msdn.com/b/adaptive_experiences_in_sharepoint_2013/archive/2012/11/14/set-up-user-segmentation-to-drive-adaptive-experiences-in-a-product-catalog-in-sharepoint-2013.aspx。我非常鼓励您去阅读这篇博客,它清楚地说明了什么是用户区段以及如何使用该功能。

我在这里并不是要抢他的风头或将功劳据为己有,而是在这里介绍我所做的工作。您在阅读完那篇博客之后就会清楚,该文章提到了必须编写自定义 Web 部件来找出应该应用于当前查询的所有用户区段,然后再将这些用户区段添加到查询。该文章还介绍了如何根据浏览器的属性添加用户分段。而我决定要做的是,编写一个根据当前用户的部门添加用户分段的 Web 部件。对于没听说过此功能的用户,当您在 SharePoint 2013 中从 Active Directory 导入配置文件时,我们会自动将所有具有唯一性的部门值导入到一个特殊的术语库中。这使得根据当前用户的部门执行某些自定义设置成为了很好的选择。

您可能会提出一个问题:“如果我要根据用户的部门呈现内容,为何不直接使用访问群体呢?”提出这样的问题是合理的,下面我将说明这两个功能的区别所在。使用访问群体目标设定时,它只不过充当一个开关 - 您只能选择显示或不显示 Web 部件。而使用用户分段时,我可以从配置文件或任何其他位置提取信息,并且可以自定义所显示的内容。由于我使用了查询规则,因此我可以对一个用户执行一个或多个其他查询,可以添加升级结果,或者甚至可以更改查询的排名顺序(例如,如果我要根据您工作的部门将某个内容设定为显示在搜索结果中的靠前位置)。这些只是 SharePoint 2013 中新增的与搜索有关的一部分非常棒的功能。

为了指导您使用此功能,我为将当前用户的部门添加到用户分段的 Web 部件附上了我的整个 Visual Studio 项目(已编译的 Web 部件程序集、解决方案和源代码)。在那之后,您可以使用该 Web 部件执行所需的任何操作 - 按原样使用它,或者将它用作基础来优化或编写您自己的用于管理用户分段的 Web 部件。当您阅读上面所链接的文章时,我还要强调有关用户分段和此 Web 部件的使用的两点内容:

  • 创建查询规则时,该规则默认配置为查询目录中的发布网站。如果您选择此选项,则不会获取任何搜索结果。请改为选择查询“所有资源”(All Sources) 的选项。该文章中的查询规则配置图显示了此查询选项,但没有进行注解。既然您需要更改默认行为才能让查询正常工作,因此我就说明一下。
  • 该文章探讨了如何使用不同的 Web 部件显示您在使用用户分段时突出现实的任何内容的结果。在本例中(正如该文章所暗指的),我的 Web 部件继承自 ContentBySearchWebPart,因此您可以使用该控件设置用户分段和显示突出显示的内容。与该文章所述内容唯一有点区别的地方是:当您将 Web 部件添加到页面时,您的 Web 部件的“设置”(Settings) 属性中将有一个不同的值。在“设置”(Settings) 中,只需要将“查询结果依据”(Query results provided by) 属性设置为“此 Web 部件”(This web part) 即可。

好了 - 您现在已做好准备了。希望您在搜索中会找到有关用户分段的有趣情景。针对我的特定情况,在撰写本文时,我就瞄准了针对“Executive”部门的员工的一些特殊培训。因此,当他们点击使用了我的 Web 部件的页面时,就会看到他们必须参加的特殊内部人员交易培训的此横幅和链接:

这是一篇本地化的博客文章。请访问 Using User Context (AKA Segmentation) in Search with SharePoint 2013 以查看原文