如何:将搜索与 SharePoint 列表联合在一起

备注

本主题介绍 Infrastructure Update for Microsoft Office Servers中的功能。若要下载此更新,请参阅 SharePoint Server 2007 基础结构更新说明:2008 年 7 月 15 日

可以创建本地搜索索引位置以显示搜索服务器的本地搜索索引中的联合结果。您可以使用此功能,采用与“最佳匹配”功能类似的方式返回针对特定搜索的 SharePoint 列表中的联合搜索结果。

在此演练中,您将了解如何显示通过 Microsoft Office Excel 2007 工作表创建的 SharePoint 列表中的联合搜索结果。本主题中描述了以下步骤:

  • 创建 SharePoint 列表

  • 为列表创建和配置搜索范围

  • 创建托管属性并将这些属性映射到列表的已爬网属性

  • 创建联合位置

  • 自定义位置的显示信息

  • 为位置配置触发器

先决条件

执行本演练需满足以下先决条件:

  • 您是 SharePoint 网站的网站集管理员。

  • 您是搜索服务器的搜索管理员。

  • 您已安装了 Microsoft Office Excel 2007。

  • 您已下载了本主题的以下示例 Office Excel 文件:Sampleformslist.xlsx

步骤 1:创建列表

首先要创建列表并用数据填充列表。为了节省时间,您可以通过从 Office Excel 工作表中导入数据来创建列表。

依据 Office Excel 工作表创建列表

  1. 在您的网站的主页上单击“网站操作”链接,然后单击“创建”。

  2. 在“自定义列表”中选择“导入电子表格”。

  3. 在“名称”字段中键入 CustomImportSample。

  4. 单击“浏览”,导航到 Sampleformslist.xlsx 的保存位置,选择该文件,然后单击“打开”。

  5. 单击“导入”。

  6. 在“区域类型”列表中单击“单元格区域”。

  7. 在“选择区域”字段中,键入 $A$1..$D$11。

  8. 单击“导入”。

创建了列表后,对本地 Office SharePoint Server 网站内容源启动增量爬网,以便用列表数据更新索引。

启动增量爬网

  1. 在“搜索管理”页上,单击左边导航栏的“爬网”部分中的“内容源”链接。

  2. 在“管理内容源”页上,指向“本地 Office SharePoint Server 网站”内容源,单击出现的箭头,然后单击“开始增量爬网”。

    重要

    确保 CustomImportSample 列表包括在“本地 Office SharePoint Server 网站”内容源中。

步骤 2:创建搜索范围

您必须为 CustomImportSample 列表创建搜索范围。此步骤包括以下任务:

  • 创建搜索范围并配置范围规则

  • 编译搜索范围并验证编译是否成功

为列表创建范围

  1. 在您的网站的主页上单击“网站操作”链接,然后单击“网站设置”。

  2. 在“网站集管理”中单击“搜索范围”。

  3. 在“查看范围”页上单击“新建范围”。

  4. 在“标题”字段中键入 SampleListScope,然后单击“确定”以创建范围。

  5. 在“查看范围”页上,单击“SampleListScope”以打开“范围属性和规则”页。

  6. 在“规则”部分中单击“新建规则”。

  7. 在“范围规则类型”字段中,单击“网址(https://server/site)”。

  8. 在“网址”字段中,单击“文件夹”,然后键入 http://SiteURL/lists/customimportsample。

    SiteURL替换为您的网站的 URL 路径。

  9. 在“行为”字段中,单击“必需 - 范围中的所有项目都必须符合此规则”。

  10. 单击“确定”以添加规则。

  11. 在“规则”部分中单击“新建规则”。

  12. 在“范围规则类型”字段中,单击“属性查询(作者 = 李向军)”。

  13. 在“属性查询”部分中,从“添加属性限制”列表中单击“contentclass”。

  14. 将以下文本复制到“属性查询”文本字段中:

    STS_ListItem_GenericList

    备注

    STS_ListItem_GenericList 是列表项的内容类。您为范围添加此限制,以使范围仅包括列表中的项,而不包括列表本身。如果不包括此限制,返回的第一个结果将始终为 CustomImportSample 列表。

  15. 在“行为”字段中,单击“必需 - 范围中的所有项目都必须符合此规则”。

  16. 单击“确定”以添加规则。

    在成功编译之前,自定义导入示例列表范围不包含任何项。

编译范围并验证编译是否成功

  1. 在“搜索管理”页上的“系统状态”部分中,为“需要更新的范围”行单击“立即开始更新”。

  2. 在您的网站的主页上单击“网站操作”链接,然后单击“网站设置”。

  3. 在“网站集管理”中单击“搜索范围”。

  4. 确保“自定义导入示例列表”的“项目”字段值为 10。

步骤 3:映射已爬网属性

通过执行以下任务将 CustomImportSample 列表的已爬网属性映射到托管属性:

  • 将已爬网属性映射到现有托管属性

  • 将已爬网属性映射到新托管属性

  • 启动对内容源的完全爬网

将已爬网属性映射到现有托管属性

  1. 在“搜索管理”页上的“查询和结果”下,单击“元数据属性”。

  2. 在“托管属性”视图中,单击“属性名称”列中的“说明”以打开“编辑托管属性”页。

  3. 在“到已爬网属性的映射”部分中,单击“添加映射”。

  4. 在“选择类别”列表中,单击“SharePoint”。

  5. 在“已爬网属性名称”中,键入“form”,然后单击“查找”。

    此操作将返回 CustomImportSample 列表的已爬网属性。

  6. 选择“ows_FormDescription(Text)”属性,然后单击“确定”。

  7. 单击“确定”将保存对 Description 托管属性所做的更改。

添加托管属性

  1. 在“搜索管理”页上的“查询和结果”下,单击“元数据属性”。

  2. 在“托管属性视图”列表中,单击“新建托管属性”。

  3. 对于“名称和类型”部分,在“属性名称”字段中键入 formid,然后选择“文本”。

  4. 在“到已爬网属性的映射”中,单击“添加映射”。

  5. 在“选择类别”列表中,单击“SharePoint”。

  6. 在“已爬网属性名称”中,键入 Form,然后单击“查找”。

    此操作将返回 CustomImportSample 列表的已爬网属性。

  7. 选择“ows_FormID”属性,然后单击“确定”。

  8. 单击“确定”以创建 formid 托管属性。

    备注

    直到搜索服务对内容源又完成一次完全爬网之后,才会应用这些属性更改。

启动完全爬网

  1. 在“搜索管理”页上,单击“爬网”部分中的“内容源”链接。

  2. 在“管理内容源”页上,指向“本地 Office SharePoint Server 网站”内容源,单击出现的箭头,然后单击“启动完全爬网”。

完全爬网完成后,验证是否已将托管属性正确映射到已爬网属性,并且是否用 CustomImportSample 列表中的数据填充了托管属性。

确认是否已正确映射了托管属性

  1. 在“搜索管理”页上的“查询和结果”下,单击“元数据属性”。

  2. 在“元数据属性映射”页上的“托管属性视图”列表中,单击“属性名称”列中的“formid”。

  3. 在“使用此属性的内容”部分中,验证“使用此属性找到的项目数”是否显示“10”。

步骤 4:添加联合位置

通过执行以下任务为 CustomImportSample 列表添加联合位置:

  • 添加联合位置

  • 测试联合位置

添加联合位置

  1. 在企业级搜索管理页上,单击“联合位置”,然后单击“新建位置”。

  2. 在“位置名称”字段中,键入 CustomListSampleResults。

  3. 在“显示名称”字段中,键入自定义列表示例结果。

  4. 在“说明”字段中,键入用于描述位置的文本,例如自定义 SharePoint 列表中的结果。

  5. 从“位置类型”字段中,单击“该服务器上的搜索索引”。

  6. 在“查询模板”字段中,键入 {searchTerms} scope:SampleListScope。

  7. 在“‘更多结果’链接模板”字段中,键入 http://SiteURL/lists/customimportsample/AllItems.aspx。

    SiteURL 替换为您的网站的 URL 路径。

  8. 单击“确定”以添加位置。

测试结果如何从您刚刚创建的联合位置中返回,以确认已正确配置了该位置。

测试联合位置

  1. 在浏览器中,导航到结果页 URL。例如,导航到 http://SiteURL/results.aspx。将 SiteURL 替换为您的网站的 URL 路径。

  2. 单击“网站操作”链接,然后单击“编辑网页”。

  3. 在“右侧区域”中,单击“添加 Web 部件”。

  4. 在“为右侧区域建议的 Web 部件”中,单击“联合结果”,然后单击“添加”。

  5. 为新联合结果 Web 部件单击“编辑”箭头以显示“Web 部件”菜单,然后单击“修改共享 Web 部件”。联合结果 Web 部件池窗格将打开。

  6. 在“位置属性”的“位置”列表中,单击“自定义列表示例结果”。

  7. 单击“确定”。

  8. 单击“退出编辑模式”以关闭“编辑”页面。

  9. 在搜索框中,键入在项列表中找到的搜索词(例如“form”),然后单击“搜索”。

    您应看到 CustomImportSample 列表中的结果显示在联合结果 Web 部件中;将使用默认的显示 XSLT 来显示列表项结果。

在接下来的步骤中,您将修改联合位置的默认显示信息以自定义结果视图。

步骤 5:自定义联合位置的显示信息

若要在联合结果中显示额外的属性,您必须自定义联合位置的显示信息。为此,请执行以下任务:

  • 自定义位置的 Properties 元素以返回 formid 托管属性

  • 自定义位置的 XSL 元素以显示 formid 托管属性中的值

自定义位置的属性元素

  1. 在“搜索管理”页上的“查询和结果”部分中,单击“联合位置”。

  2. 在“管理联合位置”页上,单击“自定义列表示例结果”。

  3. 在“编辑联合位置”页上的“显示信息”部分中,为“联合搜索结果显示元数据”清除“使用默认格式”复选框。

  4. 单击“属性”字段的省略号按钮 (…) ,以打开位置的 Properties 元素的“文本输入”窗口。

  5. 将默认 XML 替换为以下代码。

    <Columns>
      <Column Name="title"/>        
      <Column Name="path"/>
      <Column Name="description"/>
      <Column Name="contentclass"/>
      <Column Name="formid"/>
    </Columns>
    

    经过修改的 XML 将移除与搜索词突出显示相关的“Column”元素,并为 formid 托管属性添加一个“Column”元素。

  6. 单击“确定”以关闭“文本输入”窗口。

自定义位置的 Xsl 元素

  1. 单击“XSL”字段的省略号按钮 (…) ,以打开位置的 Xsl 元素的“文本输入”窗口。

    您可以在此窗口中直接修改 XSLT;但将代码复制到文件中可能更为简单。因而,您可以通过使用诸如 Microsoft Visual Studio 2008 或 Microsoft Office SharePoint Designer 2007 等应用程序来编辑该文件。编辑完该文件后,您可以将经过修改的代码复制到“文本输入”窗口并保存对联合位置所做的更改。

  2. 通过在结束 stylesheet 标记 </xsl:stylesheet> 前面添加以下代码来定义一个新模板 GetTitleWithFormID:

    <xsl:template name="GetTitleWithFormID">
      <xsl:value-of select="title"/>:  
        <xsl:value-of select="formid"/>
    </xsl:template>
    
  3. 搜索应用 GetTitle 模板的 xsl:call-template 元素。可通过搜索以下代码来查找该元素。

    <xsl:call-template name="GetTitle">
    
  4. 将 GetTitle 替换为 GetTitleWithFormID,如下所示。

    <xsl:call-template name=" GetTitleWithFormID ">
    
  5. 单击“确定”以关闭“文本输入”窗口。

  6. 单击“确定”保存对“自定义列表示例结果”联合位置所做的更改。

    再次试验查看位置的结果,以确认所做更改已生效。

  7. 浏览到搜索服务器的网站,并在搜索框中键入在项列表中找到的搜索词(例如,“form”),然后单击“搜索”。

    您应看到 CustomImportSample 列表中的结果显示在联合结果 Web 部件中。将使用自定义显示 XSLT 来显示列表项结果,并采用以下格式将 formid 值附加到标题的后面:title: formid。

步骤 6:为联合位置指定触发器

“自定义列表示例结果”位置配置当前配置为将所有查询传递到联合位置。若要限制发送到联合位置的查询数,您可以指定触发器。触发器是一种确定何时传递查询的查询约束。位置的触发器确保只会将与为触发器指定的模式相匹配的查询转发到联合位置。

为联合位置指定触发器

  1. 在“搜索管理”页上的“查询和结果”部分中,单击“联合位置”。

  2. 在“管理联合位置”页上,单击“自定义列表示例结果”。

  3. 在“编辑联合位置”页的“触发器”部分中,单击“前缀: 查询必须以指定的前缀开头”。

  4. 在“添加前缀”字段中键入 form,然后单击“确定”以保存所做更改。

    再次试验查看位置的结果,以确认所做更改已生效。

  5. 浏览到搜索服务器的网站。在搜索框中键入您在前面步骤测试的搜索词 form,然后单击“搜索”。

    由于您为位置指定了前缀触发器但未在查询中传递前缀,因此,这一次联合结果 Web 部件中将不会显示任何搜索结果。

  6. 测试另一个搜索词,但现在使用前缀。在搜索框中键入 form benefits,然后单击“搜索”。

    将返回包含词条“benefits”的所有列表项。

  7. 测试同一搜索词,这一次不使用前缀。在搜索框中键入 benefits,然后单击“搜索”。

    联合结果 Web 部件中将不显示任何结果。

See Also

概念

联合搜索概述

联合结果 Web 部件 XSLT