创建自定义索引连接器

上次修改时间: 2015年3月9日

适用范围: SharePoint Server 2010

本文内容
程序集编码
创建 BCS 模型文件
部署自定义索引连接器

Microsoft SharePoint Server 2010 搜索将使用 Microsoft Business Connectivity Services (BCS) 对外部数据进行爬网和索引。如果 Business Connectivity Services 并不直接支持的您的外部系统,则您可以编写代码来创建一个 Web 服务, .NET 连接程序集或自定义索引连接器,通过 Business Connectivity Services 通过公开您的外部系统。如果外部系统中的实体模型是动态的、具有自定义类型且范围较广,则您应考虑针对该数据源类型创建一个自定义连接器。有关更多信息,请参阅使用 .NET 程序集连接器与编写自定义连接器之间的差异

本主题描述有关为 SharePoint Server 搜索创建自定义索引连接器的要求,并完成以下任务:

  • 针对自定义索引连接器进行程序集编码

  • 创建 Business Connectivity Services 模型文件

  • 部署自定义索引连接器

提示提示

有关为 Business Connectivity Services 创建 Web 服务和 .NET 连接程序集的信息,请参阅创建 .NET 连接程序集和 Web 服务

程序集编码

您必须在为自定义索引连接器程序集编写的代码中执行以下操作:

  • 实现要求的连接器框架类型。

  • 定义外部内容类型。

  • 实现 SpecificFinder 和 Finder 操作的方法。

实现要求的连接器框架类型

SharePoint Server 搜索连接器框架提供以下类型,您在自定义索引连接器程序集中必须提供这些类型的实现:

这些类型位于 Microsoft.Office.Server.Search.Connector.BDC 命名空间中。您必须添加对 Microsoft.Office.Server.Search.Connector.dll 和对 Mcrosoft.BusinessData.dll 的引用,以便在自定义索引连接器程序集中使用连接器框架类型。以下步骤描述如何从 Microsoft Visual Studio 2010 集成的开发环境 (IDE) 实现这一任务。

添加引用

  1. 在 Visual Studio IDE 中打开自定义索引连接器项目,在"项目"菜单中单击"添加引用"。

  2. 在".NET"选项卡上,选择具有以下组件名称的引用,然后单击"确定":

    • Microsoft Search 组件

      在".NET"选项卡上,您应会看到两个带有"Microsoft 搜索组件"组件名的条目。选择其路径列为 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\\ISAPI\Microsoft.Office.Server.Connector.dll 的条目。如果"添加引用"对话框的".NET"选项卡中缺少此条目,则您必须通过使用到 Microsoft.Office.Server.Search.Connector.dll 的路径从"浏览"选项卡中添加引用。

    • Microsoft SharePoint 基础业务数据

      如果"添加引用"对话框的".NET"选项卡中缺少此条目,则您必须从"浏览"选项卡中添加引用。此组件的程序集 Microsoft.BusinessData.dll 位于与 Microsoft.Office.Server.Search.Connector.dll 相同的位置。

StructuredRepositorySystemUtility 类

程序集必须包含一个从 StructuredRepositorySystemUtility 类(ISystemUtility 接口的部分实现)派生的类。此类实现 ExecuteStatic(IMethodInstance, ILobSystemInstance, [], IExecutionContext) 方法,该方法定义外部系统中的类型如何针对 SharePoint Server 搜索进行反射的逻辑。

LobUri 类

此程序集必须包含一个从 LobUri 类(ILobUri 接口的实现)派生的类。当 URL 从Search Service 应用程序传递到 Business Connectivity Services 时,此类将映射这些 URL。

INamingContainer 接口

此程序集必须包含一个实现 INamingContainer 接口的类。当 URL 从 Business Connectivity Services 传递到Search Service 应用程序时,此类对这些 URL 进行映射。

定义外部内容类型

对于您从外部系统返回的每个外部内容类型,创建一个类并定义它应包含的字段。在这一步骤中,您将定义一个外部内容类型的属性架构。

实现 Finder 和 SpecificFinder 操作的方法

程序集必须提供实现 Finder 和 SpecificFinder 操作的方法实现。Finder 操作从外部系统返回所有项。有关详细信息,请参阅实现 Finder。SpecificFinder 操作从外部系统返回某个特定项的所有详细信息。有关详细信息,请参阅实现 SpecificFinder

创建 BCS 模型文件

您必须为自定义索引连接器创建一个 Business Connectivity Services 模型文件。有关 Business Connectivity Services 模型文件的信息,请参阅创作 BDC 模型。有关自定义连接器的模型文件的示例,请参阅示例 BDC 模型:连接到自定义文件系统连接器

自定义索引连接器的模型必须包含下表中指定的属性。

名称

元数据对象

说明

SystemUtilityTypeName

LobSystem

在继承自 StructuredRepositorySystemUtility 类的自定义索引连接器程序集中指定类的完全限定的名称。

InputUriProcessor

LobSystem

在继承自 LobUri 类的自定义索引连接器程序集中指定类的名称。

OutputUriProcessor

LobSystem

在实现 INamingContainer 接口的自定义索引连接器程序集中指定类的名称。

部署自定义索引连接器

在您部署自定义索引连接器之后,您需要向Search Service 应用程序注册它,然后再创建一个内容源以对外部数据执行爬网。

注册自定义索引连接器

  1. 在应用程序服务器上的全局程序集缓存中安装自定义索引连接器程序集。有关其他信息,请参阅How to: Install an Assembly into the Global Assembly Cache

  2. 将 Business Connectivity Services 模型文件复制到应用程序服务器。

  3. 在应用程序服务器上打开 SharePoint 2010 命令行管理程序。有关使用此工具的信息,请参阅使用 SharePoint 2010 Management Shell 管理服务应用程序

  4. 在命令提示符处,键入并运行以下命令:

    $searchapp = Get-SPEnterpriseSearchServiceApplication

    执行完此命令之后,立即键入并运行以下命令:

    New-SPEnterpriseSearchCrawlCustomConnector -SearchApplication $searchapp -protocol ProtocolName -ModelFilePath "\\ServerName\FolderName\ModelFileName.xml" -Name Name

  5. 向应用程序服务器中添加以下注册表项:

    [HKEY_LOCAL_MACHINE]\ SOFTWARE\Microsoft\Office Server\14.0\Search\Setup\ProtocolHandlers\ProtocolName

  6. 将在上一步骤中创建的注册表项的值设置为 OSearch14.ConnectorProtocolHandler.1

  7. 在命令提示符处,键入以下命令,然后运行这些命令:

    1. net stop osearch14

    2. net start osearch14

创建内容源

  1. 在"搜索管理"页中,单击"内容源",然后单击"新建内容源"。

  2. 键入内容源的名称,并在"内容源类型"中,单击"自定义存储库"。

  3. 在"存储库的类型"中,选择用于自定义索引连接器的协议。

  4. 在"开始地址"中,基于自定义索引连接器协议指定开始地址。

  5. 选择"对该内容源启动完全爬网",然后单击"确定"。

请参阅

概念

代码示例:MyFileConnector 自定义索引连接器

SharePoint Server 搜索连接器框架

Business Connectivity Services:操作方法和演练

其他资源

MyFileConnector 自定义索引连接器示例(该链接可能指向英文页面)