利用 SharePoint 2013 查询规则将人员元数据集成到内容搜索中
原文发布于 2012 年 8 月 20 日(星期一)
的确,不可否认,这个标题有点长,有点怪,那么,Steve 要在这里谈什么呢?这么说吧,几天前,我看到这样一个热门问题:在我的组织中,我拥有为不同部门(如销售部、财务部)工作的员工。当有人键入像“销售管理营销”这样的查询时,我希望也能显示在销售部门工作的人员。这像是在使用 SharePoint 2013 中新的查询规则功能,听上去相当酷。
首先,我们回头看一个相关的将要在这里使用的已启用功能。在 SharePoint 2013 中,当从 Active Directory 执行人员档案导入时,它会自动在 Managed Metadata Service 中填充一个特殊术语集。事实上,它会实际创建一个名为“人员”(People) 的主组并填充三个术语集:部门 (Department)、职位 (Job Title) 和位置 (Location)(注释: 我不能保证产品中提供所有这三项,有可能最终只有两项)。在人员档案导入过程中,对于所有这些属性的所有用户,每个术语集都将用唯一值填充。这确实对解决这个问题起到很大帮助,因为在我看彩信时,我发现我的部门 (Departments) 列表中包括了“销售部门”(Sales),而我拥有这样的用户,他们在 AD 中其部门 (Department) 属性中有这个值:
好,我们现在来创建一条查询规则。正如我在我的第一篇查询规则 (https://blogs.msdn.com/b/sharepoint_chs/archive/2012/09/20/sharepoint-2013-using-query-rules-result.aspx) 文章中提到的,我们要做的第一件事是设置触发规则的条件。在此情况下,我们要使用“高级查询文本匹配”(Advanced Query Text Match) 选项,并选择最后一个选项,即“查询包含以下词典中的条目:”(Query contains an entry in this dictionary:)。现在,它具有一个下拉选择器,但不幸的是,这是个误导。我们在这里要做的其实是单击它下面的“从分类导入”(Import from taxonomy) 链接。当我们这样做后,会看到一个标准 MMS 选取器,所以我只需要展开我的本地 MMS 实例,单击“部门”(Department) 术语集,因为我希望当查询文本中包含的词是我的组织中的一个部门时即触发我的规则。
对于我的规则的下一部分,我选中了所有三个复选框来查看查询术语。这样,如果整个查询等于一个部门名称,或者查询的开头或结尾为部门名称,则我希望触发我的规则。最后,对于规则配置的最后部分,如果有匹配,则我希望将匹配分配给 {subjectTerms},其余术语分配给 {actionTerms}。所以,如果我们使用上面的搜索“销售管理营销”(sales management pitch) 示例,则因为查询词开头为“销售”(sales),是彩信中的有效部门值,所以我的查询规则应当这样匹配:“销售”(sales) 将是 {subjectTerms},“管理营销”(management pitch) 将是 {actionTerms}。该配置应是这样:
现在,当我的规则触发时,我想将销售部门的一些人添加到查询结果的顶部。所以我开始着手我的查询规则的下一部分,也就是要采取的行动。我单击“添加结果块”链接并打开该对话框。在这种情况下,我想要添加一个可显示人员结果的结果块,所以我做的第一件事是单击“搜索此源”下拉框,将它从“查询的原始源”改成“本地人员结果(系统)”。我先做这件事,这样当我修改和测试查询时,查询生成器将使用该源。完成上述工作后,我知道,基于我的匹配规则,不管找到什么部门,它都会在特殊术语“{subjectTerms}”中。为了使用该结果,我单击“启动查询生成器”(Launch Query Builder) 按钮以便可以修改查询。我删除了位于查询文本编辑区域中的任何现有文本,然后单击“属性筛选器”(Property filter) 下拉框,单击“显示所有托管属性”(Show All Managed Properties) 选项。这将用所有托管属性重新填充下拉框,并且是从我选择的部门的所属列表中。在限定符下拉框中,我将它从“包含”(Contains) 改为“等于”(Equals),然后在“选择值”(Select value) 下拉框中,选择“{subjectTerms} – 来自部门的匹配词典条目 ({subjectTerms}”({subjectTerms} – the matched dictionary entry from Department),然后单击“添加属性筛选器”(Add property filter) 按钮。结果如下面这样:
事情进展得很顺利。我现在想在其中添加一个更加个人化的联系,为此,我单击查询生成器中的“排序”选项卡。在这种情况下,我不是只使用默认排序模型,因为我打算显示我准备按社会距离排序的人们。所以,我不仅将在结果中显示人们,还会根据人们与我的社会距离远近来对人们排序。为此,我只是用“排名模型”(Ranking Model) 下拉框并选择“人员搜索社会距离模型”(People Search Social Distance Model),像下面这样:
现在,我可以单击“测试”选项卡并测试一下我的新查询。默认情况下,您应该看到零个结果,因为它没有值用于 {subjectTerms} 变量。为了对实际查询条件进行测试,单击“显示更多”(Show More) 链接,然后在“{subjectTerms}*:”编辑框中键入“销售”(sales),单击“测试查询”按钮。我在不同排名模型上进行了测试,以确保在不同条件下都能按预期工作,它也确实如此,所以我单击“确定”按钮来保存我的查询更改。
现在,我要为我的查询规则做最后一件事,那就是在我的信息块的底部显示一个链接,这样,当人们单击该链接时,他们可以了解所找到的部门中的所有工作人员。在我进行进一步阐述之前,我要说点对于完全公开信息有利的事情:我有一张图片,我将在少数几个最终结果中展示,而您将看到“显示更多”(SHOW MORE) 链接。对于这篇特殊文章,我实际上合并了两张图,一张包含“显示更多”(SHOW MORE) 链接,另一张则没有。这样做的原因是,“显示更多”(SHOW MORE) 链接功能在 beta 2 中不能一致运行。RTM 会解决所有这些缺陷。但是目前,我有时会碰到这些问题,但不是经常。我正好抓拍了一张故障截图,这是在我以前工作的结果集中发生的。我在这里提到此事是希望您不要太过沮丧,或许您正在使用 Beta 2,有时会碰到这些问题,有时则不会。
也就是说,为了实现我在前一段中描述的这一功能,我选择选项“更多”(More) 链接来转到下面的 URL,然后键入以下内容:peopleresults.aspx?k=Department:{subjectTerms} 。我还决定显示三个匹配项,并且如上所述,让它们在所有搜索结果的顶部显示。所以现在,我完成的“结果块”(Result Block) 对话框看起来像这样:
现在,我可以对它进行测试了。所以,我执行了“销售管理营销”(sales management pitch) 查询,下面是我的结果的样子:
(注意,从这里您会看到“显示更多”(SHOW MORE) 链接,我不得不将它粘贴在此)。很酷的是 Rocky 出现在搜索结果的顶部,因为在我的组织中,我是他的经理,所以我们看到社会距离排名算法发挥了作用。如果我将鼠标悬停在结果中某个人上面,则我可以看到他们最近发布的文档列表:
最后,当我确实单击“显示更多”(SHOW MORE) 链接时,它将我带到人员搜索结果页面,我将看到在销售部门工作的所有人员。当我将鼠标悬停在其中任何一个人上面时,我可以了解他们都做了什么,查看他们的个人档案页面等。
就此,我们的演示结束。我们接纳了一种非常真实的客户要求,我们使用了 SharePoint 2013 中新的查询规则和人员档案导入功能来创建一个解决方案,它完全不需要编码,而且提供大量功能。我希望您继续查看和使用查询规则。
这是一篇本地化的博客文章。请访问 Integrating People Metadata In Content Searches Using Query Rules in SharePoint 2013 以查看原文