如何在经典搜索结果中显示自定义托管属性的值 - SharePoint Server 中的选项 2
适用于:2013 2016 2019 Subscription Edition SharePoint in Microsoft 365
在 如何在搜索结果中显示自定义托管属性中的值 - SharePoint Server 中的选项 1 中 ,我们演示了一种简单的方法,可将两个自定义托管属性中的自定义图标和值添加到经典搜索结果中。 在本文中,我们将介绍一种更完整的方法,用于更改经典搜索结果的显示方式,包括 if 语句和命中突出显示。 在本文中,您将了解:
一石三鸟的策略 - 搜索结果版本
首先,让我们说明我们想要实现的目标:
显示两个自定义托管属性的值。
将搜索词突出显示应用于两个自定义的托管属性。
自动改进经典搜索结果的相关性。
在查看有关如何实现这些目标的详细信息之前,我们先来看看我们要遵循的策略。 如果这有点复杂,请尝试将问题暂时搁置。 希望到最后能清楚。
首先,请记住我们应如何理解搜索词突出显示:
搜索结果 Web 部件的“搜索词突出显示属性(JSON)” 部分中列出的托管属性和“神奇摘要”属性都被传递到 HitHighlightedProperties 属性。
HitHighlightedProperties 属性的所有值都传递给 HitHighlightedSummary 属性。
HitHighlightedSummary 中值的截断版本显示在搜索结果 Web 部件中,末尾有三个点。
另请记住,每个项目显示模板都包含对 Item_CommonItem_Body 显示模板的引用,并且此模板包含 一个 onlick 方法,该方法将基于用户的单击行为自动改进相关性。
因此,我们的策略是这样的:在由 Item_CommonItem_Body 显示模板传递和呈现的项目显示模板中创建变量。
具体而言,这意味着我们必须执行下列操作:
将要在经典搜索结果中显示的自定义托管属性添加到搜索结果 Web 部件中的“命中”突出显示的属性。
将自定义托管属性添加到项目显示模板中。
在项显示模板中,创建一个变量,该变量将由 属性 HitHighlightedSummary 用来显示具有命中突出显示的两个自定义托管属性。
在项显示模板中,保留引用
_#=ctx.RenderBody(ctx)=#_
,以便 Item_ComonItem_Body 显示模板呈现搜索结果。 这可以确保我们获得自动提高的相关性。
好了,现在让我们分步操作,并举例说明如何针对搜索中心方案执行此操作。
如何以搜索词突出显示的方式显示自定义托管属性中的值,并获得自动提高的相关性。
首先,您必须找到与您要使用的自定义网站栏对应的托管属性名称。 我们在 如何在搜索结果中显示自定义托管属性中的值中查看了如何执行此操作 - SharePoint Server 中的选项 1。
接下来,您必须在“搜索结果 Web 部件”中进行一些配置。 步骤如下:
在“搜索结果”页上,选择 “设置” 菜单,然后选择“ 编辑页面”。
在“搜索结果 Web 部件”中,选择“ Web 部件”菜单>“”编辑 Web 部件”。
在“Web 部件”工具窗格中,选择展开“ 显示模板” 部分,然后选择“ 使用单个模板显示项”。 这使你可以更改 JSON) 字段 (命中突出显示的属性 。
在“搜索词突出显示属性(JSON)”字段中,使用以下格式将您要添加搜索词突出显示的自定义托管属性添加到:
“<托管属性名称>”
在我们的搜索中心方案中,我们想将搜索词突出显示应用到 ContentSummaryOWSMTXT 和 owstaxIdTechnicalSubject 托管属性。
选择“应用”以保存所做的更改。 “ 显示模板” 部分将关闭。
若要重新打开该部分,请选择“ 显示模板”,然后选择“ 使用结果类型显示项目”。
选择“ 确定” 并保存页面。
接下来,您需要将自定义托管属性添加到项目显示模板。 下面是您应该执行的操作:
打开属于您希望为其自定义搜索结果的结果类型的项目显示模板。
在我们的搜索中心方案中,这是“TechNet 内容”。
在该项目显示模板的 ManagedPropertyMapping 标记中,请使用下面的语法添加您要显示的自定义托管属性:
'<Current item property name>':<Managed property name>'
在搜索中心方案中,我们希望在搜索结果中显示来自托管属性 ContentSummaryOWSMTXT 和 owstaxIdTechnicalSubject 的值。 为了使文件更易于维护,我们使用与托管属性相同的名称命名了当前的项目属性。
接下来,您需要在将由 Item_Common_Item_Body 显示模板使用和呈现的项目显示模板中创建变量。 下面是您应执行的操作:
由于无法保证自定义属性的值将包含任何输入的查询词(即不使用命中突出显示),因此必须创建变量,保证无论命中突出显示如何,都将显示自定义属性的值。
以下屏幕截图显示了如何为自定义属性 ContentSummaryOWSMTXT 和 owstaxIdTechnicalSubject 创建两个此类变量。
此外,我们为“标题”属性添加了一个类似变量。 如果不添加此内容,则不会呈现搜索结果。
您要在项目显示模板中进行的最后一步操作是创建将覆盖用于显示值的 HitHighlightedSummary 属性。
保存项目显示模板。
注意
如果在 Microsoft 365 中使用 SharePoint,则无需执行此步骤。 Go to Site settings>Search Result Types. 此时会显示 属性同步 警报。
之所以出现此警报,是因为我们已将托管属性添加到项显示模板, (我们在步骤 9) 中执行的操作。 若要更新新添加的托管属性的结果类型,请选择"更新"。
重要
如果您不执行此更新,新添加的托管属性就不会显示在您的搜索结果中。
我们做了这些更改之后,当用户在搜索中心中输入查询时,该搜索结果会包含:
自定义图标
以搜索词突出显示方式显示的“标题”的值
以搜索词突出显示方式显示的“ContentSummaryOWSMTXT”的值
owstaxIdTechnicalSubject 的值 (查询词与属性值不匹配,但由于我们在步骤 10 中创建的变量,因此将显示值。)
指向列表中项目的链接
我们想对 owstaxIdTechnicalSubject 的值的显示方式稍作更改。 我们希望为用户提供更多的上下文来了解此值表示的含义。 因此,我们决定在此值之前添加文本“技术主题:”。 此外,由于并非所有列表项都显示此值,因此我们决定仅当存在值时才显示此值。
为此,我们对将覆盖 HitHighlightedSummary 属性的变量进行了更改:
请注意,我们在文本“技术主题:”中添加了略有不同的颜色。 添加完毕之后,最终的搜索结果将显示如下:
在 如何在 SharePoint Server 中创建新的结果类型中,我们决定需要六种不同的结果类型。 创建 TechNet 内容 结果类型和显示模板后,可以轻松地将此工作复制到其他五种结果类型。
结果如下:
因此,现在我们已更改经典搜索结果的显示方式,下一步是更改悬停面板中显示的值。