了解项目显示模板和点击突出显示在 SharePoint Server 中的经典搜索体验中的工作原理
适用于:2013 2016 2019 Subscription Edition SharePoint in Microsoft 365
在本文中,您将了解:
如何映射网络驱动器
使用显示模板时,如果映射网络驱动器,你可以使生活更加轻松。 通过执行此操作,你将能够使用 Windows 资源管理器中的显示模板。 有关说明,请参阅如何映射网络驱动器。
为什么了解托管属性名称很重要
本系列介绍性主题的 搜索工作原理 部分介绍了如何在爬网过程中将网站栏和网站栏值“转换为托管属性和托管属性值”。 请务必了解如何查找表示网站栏的托管属性的名称,因为要向搜索结果添加新信息,必须向项目显示模板添加托管属性名称。 如果您不确定托管属性的命名原理,请参阅From site column to managed property - What's up with that?。
混乱? 嗯,不要绝望。 在本系列的后面部分,我们将向你展示如何查找托管属性名称并将其添加到项显示模板的步骤。
关于项目显示模板中的重要元素
了解搜索结果在 SharePoint Server 中的显示方式一文介绍了 SharePoint Server 包含许多项显示模板。 尽管这些显示模板并不完全相同,但是它们都包含控制搜索结果显示方式的某些元素。
言归正传,我们来打开一个项目显示模板,例如:Item_Excel。
注意
因为我们已映射网络驱动器,所以可以打开最喜爱的 HTML 编辑器中的文件,例如 Notepad++。
<关于标题>标记
显示模板的顶部有一个 <标题> 标记。 当在 SharePoint UI 中进行配置时(例如,配置结果类型时),会显示此标记中的文本。
以下屏幕截图显示项显示模板“Excel Item”中标题>标记中的文本<如何在Microsoft Excel 结果类型的配置中显示。
关于 ManagedPropertyMapping 元素
在<标题>标记之后,mso:CustomDocumentProperties> 标记中有一<组元素,其中最重要的元素是 <mso:ManagedPropertyMapping>。
ManagedPropertyMapping 元素包含可用于显示搜索结果的托管属性。 以下语法用于将这些属性存储到项目显示模板中:
'<Display template reference name>':<Managed property name>'
以下屏幕截图为“Excel 项目”显示模板显示默认 ManagedPropertyMapping 元素。
请注意,显示模板引用名称与托管属性名称相同,例如 'Title':'Title' or 'FileType':'FileType'
。 虽然乍一看这有点令人费解,但是相同名称更易于维护文件。
默认情况下,对于不同的项目显示模板,此元素中的托管属性稍有不同。 但是,所有显示模板中都包含两个托管属性: HitHighlightedProperties 和 HitHighlightedSummary。 我们将在本主题的“命中突出显示的工作原理 - 它很神奇!”部分探讨这两个属性。
<关于正文>标记
在 <正文> 标记中,有一个 <带有 ID 的 div> 标记。 默认情况下,此 <div> 标记的 ID 与文件的名称匹配。 在我们的案例中,此 ID 为 Item_Excel。
显示模板用于显示搜索结果的任何 HTML 或代码都包含在此 <div> 标记中。
在此 <div> 标记中,有一个或多个以 --#_ 开头<,以 _#--结尾>的块。 JavaScript 代码用于这些块内部,HTML 用于这些块外部。 还可以使用这些块通过条件语句控制 HTML。 我们将在后面的文章中介绍如何执行此操作。
关于悬停面板显示模板变量
我们必须考虑此块中使用的一个变量: var hoverUrl。 在 了解搜索结果在 SharePoint Server 中的显示方式中,我们介绍了每个项目显示模板如何包含对悬停面板显示模板的引用。 变量 var hoverUrl 包含此引用。
以下屏幕截图演示 var hoverUrl 如何指向 Item_Excel_HoverPanel 悬停面板显示模板。
关于在搜索结果中显示的图标
我还想讲一下 ctx.CurrentItem.csr_Icon 值。 此值指向应在每个搜索结果旁边显示的图标,例如 Excel 图标。
以下屏幕截图演示 ctx.CurrentItem.csr_Icon 值如何指向图标。
在本系列的后面部分,我们将了解如何更改此值,使其指向自定义图标。
关于对常用项目显示模板的引用
在 div> 的<末尾,包括一个非常重要的代码行:#=ctx。RenderBody (ctx) =#。 在 了解搜索结果在 SharePoint Server 中的显示方式中,我们了解了这是对所有结果类型使用的项显示模板的引用。
以下屏幕截图显示了 #=ctx 的方式。RenderBody (ctx) =# 在 Item_Excel 显示模板中使用。
关于搜索词突出显示
即使你以前从未听说过点击突出显示,你也看到了该功能的运行情况,即使你可能没有考虑过它。
搜索词突出显示功能获取用户输入到搜索框中的词,并在搜索结果中以粗体的形式显示。 从而,用户可以轻松浏览搜索结果以查看出现查询词的上下文。 例如,以下屏幕截图显示输入到搜索框中的“结果类型”。 在搜索结果中,“结果”和“类型”以粗体形式显示。
命中突出显示的工作原理 - 这是神奇的!
默认情况下,为某些托管属性启用搜索词突出显示。 若要查看这些托管属性,请编辑“搜索结果 Web 部件”。 在 Web 部件工具窗格中,展开“显示模板”部分。 为搜索词突出显示启用的属性列于“搜索词突出显示属性(JSON)”部分。
除此之外,还有一些方法。但是,目前重要的是您知道这些托管属性列于何处。
让我们回到“结果类型”搜索,并仔细看看第一个搜索结果,它。 返回是因为 “标题 ”和 “项目/文件名” 列中的值包含我们要查找的字词。
如本主题的“关于 ManagedPropertyMapping 元素”部分所述,项显示模板中的 ManagedPropertyMapping 元素包含可用于显示搜索结果的托管属性。 基于此,可以了解显示“关于配置 结果类型 ”的原因。 因为“关于配置结果类型”是列表项目中“标题”的值,且“标题”是显示模板中 ManagedPropertyMapping 元素中的托管属性之一。 因为“标题”是列于搜索结果 Web 部件的搜索词突出显示之一,因此“结果类型”以粗体形式显示(搜索词突出显示)。
但为什么是“CSH_Configure_ result_types... 是否显示在搜索结果中? 在列表项中,可以看到这是“项目/文件名”的值,但该网站列的托管属性未包含在显示模板的 ManagedPropertyMapping 元素中。 它也没有作为搜索结果 Web 部件中的命中突出显示的属性之一列出。 那么为什么显示此值?
关于“神奇摘要”属性
如果您猜到了搜索词突出显示,那么您是正确的。 除了您在“搜索结果 Web 部件”的“搜索词突出显示属性(JSON)”部分看到的默认属性外,每个项目都还有一个包含摘要的属性。 这几乎像是一个神奇属性,因为该属性存储了搜索索引中每个项目的摘要。 此摘要创建于 SharePoint 底层,所以您无需担心。 当我搜索“结果类型”时,重要的一点是,在“标题”和此“神奇摘要”属性中找到一个匹配。
如果您正在思考,坚持住! 我理解显示“标题”值的原因,因为“标题”是 ManagedPropertyMapping 元素显示模板中的托管属性之一。 但是,我在显示模板的 ManagedPropertyMapping 元素中没有看到“神奇摘要”属性。 那么如何显示此值?
这就是 HitHighlightedProperties 和 HitHighlightedSummary 这两个属性很有用的地方。 下图并未表明 SharePoint 实际上是如何处理这些属性的。 但是,您可以通过以下方法进行思考:
搜索结果 Web 部件的“搜索词突出显示属性(JSON)” 部分中列出的托管属性和“神奇摘要”属性都被传递到 HitHighlightedProperties 属性。
HitHighlightedProperties 属性的所有值都传递给 HitHighlightedSummary 属性。
搜索结果 Web 部件中显示 HitHighlightedSummary 中值的截断版本。
如果仔细查看搜索结果,你会发现许多搜索结果的末尾显示有三个点。
这些点表明这些值来自 HitHighlightedSummary 属性。
如果想要每个搜索结果只显示最少量的信息,您可以使用搜索词突出显示魔法,此方法可能会显示默认途经下的搜索结果。 但是,如果想要显示每个搜索结果的自定义信息,您必须执行一些自定义操作。
下一篇文章中,您将了解到自定义搜索结果的第一步操作:创建新的结果类型。