如何在经典搜索结果中显示自定义托管属性的值 - SharePoint Server 中的选项 1
适用于:2013 2016 2019 Subscription Edition SharePoint in Microsoft 365
在本文中,您将了解:
如何显示自定义图标
在 了解搜索结果在 SharePoint Server 中的显示方式中 ,我们介绍了如何为经典搜索结果显示 Word、PDF 和 Excel 图标。 在我们的搜索中心方案中,我们想要在属于新创建的“TechNet 内容”结果类型的所有搜索结果旁添加以下自定义图标:
TN
若要显示经典搜索结果的自定义图标,应执行以下操作:
将自定义图标添加到 SharePoint Server 库。
在我们的搜索中心方案中,我们将自定义图标添加到“图像”库中。
打开从您想为其显示自定义图标的结果类型引用的项目显示模板。
在我们的搜索中心方案中,我们还删除了 if 语句:if (ctx.CurrentItem.IsContainer)。
在搜索页中,输入将触发新的结果类型的查询。
在搜索中心方案中,我们输入了“结果类型”。作为 TechNet 发布的搜索结果现在旁边有一个自定义图标。 伟大!
因此搜索中心的用户现在可以轻松区分我们之前在 TechNet 上发布的搜索结果。 但是,我们也希望添加来自自定义网站栏的信息,以便用户无需单击,即可查看关于每个搜索结果的重要信息。
在 了解搜索结果在 SharePoint Server 中的显示方式中 ,我们解释了网站栏在爬网过程中“转换”为托管属性。 我们还说明了只有列在项目显示模板中的托管属性才能显示在搜索结果中。 因此,要在搜索结果中显示自定义信息,您必须在项目显示模板中添加托管属性。 因此,下一步是找到与您要使用的自定义网站栏对应的托管属性名称。
如何查找托管属性名称
在开始搜索托管属性名称之前,请务必先了解一下托管属性的命名约定。 有关这一点的详细信息,请参阅关于自动创建的爬网和托管属性的命名约定。
根据您的权限级别,您可以从三个位置搜索托管属性:
权限级别 | 从该位置进行搜索 |
---|---|
搜索服务 应用程序管理员 |
管理中心 --> 托管服务应用程序 --> 搜索服务应用程序 --> 搜索架构 |
网站集管理员 |
网站设置 --> 在“网站集管理”部分中搜索架构 () |
网站集所有者 |
网站设置 --> 搜索部分中的架构 () |
下面是您应执行的操作:
转到 “网站设置>”“搜索架构”。
在 “托管属性” 页上的“ 托管属性 ”字段中,输入要查找其托管属性名称的网站列的名称。 请记住,托管属性名称不包含空格。 因此,如果网站栏名称包含空格,请将其删除。
在我们的搜索中心方案中,我们想要查找网站栏“内容摘要”的托管属性名称。 我们在“托管属性”字段中输入了 ContentSummary,并选择了绿色箭头图标。
返回一个搜索结果:ContentSummaryOWSMTXT。
由于 内容摘要 网站栏的类型为 多行文本,因此我们知道这是我们想要使用的托管属性名称。
重复此过程中的步骤,查找您希望显示在搜索结果中的所有托管属性的名称。
现在您已找到希望显示在搜索结果中的托管属性的名称,下一步是更改项目显示模板。
如何将项目显示模板更改为显示自定义托管属性中的 - 选项 1
在 了解搜索结果在 SharePoint Server 中的显示方式中 ,我们提到可通过多种方法更改项目显示模板来显示自定义托管属性中的值。 本部分中介绍的选项非常简单。 我们将在本系列的下一篇文章中介绍第二个选项。 它不包括任何 if 语句,并且不应用命中突出显示。
下面是您应该执行的操作:
打开属于您希望为其自定义搜索结果的结果类型的项目显示模板。
在我们的搜索中心方案中,这是“TechNet 内容”。
在该项目显示模板的 ManagedPropertyMapping 标记中,请使用下面的语法添加您要显示的自定义托管属性:
'<Current item property name>':<Managed property name>'
在搜索中心方案中,我们希望在搜索结果中显示来自托管属性 ContentSummaryOWSMTXT 和 owstaxIdTechnicalSubject 的值。 为了使文件更易于维护,我们使用与托管属性相同的名称命名了当前的项目属性。
- 在正文>的第二个 <div> 标记中<,使用以下语法添加将显示自定义托管属性值的代码:
_#= ctx.CurrentItem.<Current item property name> =#
在我们的搜索中心方案中,我们将以下代码添加到了项目显示模板:
<div>_#= ctx.CurrentItem. ContentSummaryOWSMTXT =#_</div>
<div>_#= ctx.CurrentItem. owstaxIdTechnicalSubject =#></div>
保存项目显示模板。
注意
如果在 Microsoft 365 中使用 SharePoint,则无需执行此步骤。 Go to Site settings>Search Result Types. 此时会显示 属性同步 警报。
显示该警报是因为我们在项目显示模板中添加了托管属性(步骤 2)。 若要使用新添加的托管属性更新结果类型,请选择“ 更新”。
重要
如果您不执行此更新,则新添加的托管属性不会显示在搜索结果中。
进行此更改后,当用户在搜索中心输入查询时, ContentSummaryOWSMTXT 的值和 owstaxIdTechnicalSubject 的值都显示在搜索结果中。
尽管搜索结果中显示了两个自定义属性,但结果并不完全正确。 例如,我们希望在标题和链接之间显示两个自定义属性,而不是像现在一样显示下面的链接。
为了更好地了解为什么搜索结果的显示方式与之前一样,让我们进一步研究一下自定义的项目显示模板:
ctx.CurrentItem.csr_Icon
指向自定义图标的位置。 该变量供 Item_CommonItem_Body 显示模板使用。_#=ctx.RenderBody(ctx)=#_
调用 Item_CommonItem_Body 显示模板。 (请记住 了解项目显示模板和点击突出显示在 SharePoint Server 中的工作方式。 Item_CommonItem_Body 显示模板显示自定义图标、标题和指向 item 的链接。)_#= ctx.CurrentItem.ContentSummaryOWSMTXT =#_
和_#= ctx.CurrentItem.owstaxIdTechnicalSubject =#_
显示两个托管属性 ContentSummaryOWSMTXT 和 owstaxIdTechnicalSubject 的值。
若要在标题和链接之间显示自定义属性,可以通过从自定义显示模板中删除引用_#=ctx.RenderBody(ctx)=#_
来使Item_CommonItem_Body显示模板不运行。 然后您可以按您希望其显示的顺序添加属性,如下所示:
搜索结果将如下所示:
只要在样式上多费一点心思,就能得到一个足够好的结果。 但是,通过删除对 _#=ctx.RenderBody(ctx)=#_
的引用, Item_CommonItem_Body 显示模板不再用于显示结果。
Item_CommonItem_Body显示模板包含一些可自动提高经典搜索结果相关性的功能。 因此,在删除 _#=ctx.RenderBody(ctx)=#_
引用之前,应考虑自动改进相关性是否是搜索网站用户将从中受益的内容。
关于点击跟踪和自动提高的关联性
Item_CommonItem_Body 显示模板包含用于跟踪用户的点击行为的 onlick 方法。 此跟踪会影响经典搜索结果的相关性。 例如,用户经常点击的搜索结果将自动显示在搜索结果中的前面位置。
重要
如果希望经典搜索结果根据用户的单击行为自动获得改进的相关性,请不要从项目显示模板中删除 对 _#=ctx.RenderBody(ctx)=#_
的引用。
在下一篇文章中,我们将介绍如何保留此引用、在经典搜索结果中的标题和链接之间显示自定义属性,以及如何对自定义属性应用命中突出显示。