构建联合搜索连接器的体系结构指南
上次修改时间: 2010年4月21日
适用范围: SharePoint Server 2010
本文内容
联合连接器的要求
联合连接器示例应用场景
创建联合连接器的准则
Microsoft SharePoint Server 2010 搜索使您能够通过联合位置包括内容库中搜索服务器爬网程序未建立索引的项目。
SharePoint 企业级搜索支持以下类型的联合位置:
此服务器上的搜索索引 来自本地 SharePoint Server 2010 服务器的搜索结果。
FAST 索引 来自 FAST Search Server 2010 for SharePoint 的搜索结果。
**支持 OpenSearch 1.0 或 1.1 标准的网站 **任何远程搜索服务器的结果页的 RSS 源,或任何支持 OpenSearch 标准(请参见 OpenSearch.org(该链接可能指向英文页面))并以结构化 XML 格式(例如,RSS 或 Atom 结果)返回搜索结果的可搜索 RSS 源。
在某些应用场景中,您可能希望包括来自其他类型的内容库的联合搜索结果,但不希望 SharePoint Server 搜索对内容进行爬网。示例应用场景中包括的存储库具有以下特点:
可能是由于技术、资源或内容大小等原因而不能进行爬网。
已具有可以正常运行的搜索引擎。
是安全的,并且只能通过搜索查询来访问。
若要在这些存储库应用场景中包含联合结果,必须创建联合连接器,这是一个应用程序,可提供一个存储库界面来公开存储库搜索引擎的结果。公开结果的方式必须与 OpenSearch 联合位置公开结果的方式相同。
若要决定是直接对存储库内容进行爬网,还是将其添加为联合位置,请考虑内容直接爬网的下列优点:
可以按相关性对结果进行排序。
可以控制内容索引的更新频率。
可以修改已爬网元数据。
可以对已爬网内容执行单一备份操作。
本主题讨论创建SharePoint 企业级搜索联合连接器的要求,并介绍有关创建该连接器的一些体系结构方面的指导。
联合连接器的要求
本节介绍基本联合连接器的最低要求,先讨论SharePoint 企业级搜索如何连接到 OpenSearch 位置和检索结果,然后讨论如何在联合连接器中实现类似功能。
从 OpenSearch 位置联合搜索
在为SharePoint 企业级搜索构建联合连接器之前,您应当了解搜索服务器如何查询 OpenSearch 联合位置,以及如何处理返回的结果:
搜索服务器通过使用位置定义信息的查询模板中指定的 URL 将 GET 请求发送到联合位置。参数化的 URL 指向该位置的 Web 界面,并包含搜索查询和搜索引擎所需的任何参数。
Web 界面返回响应,其中包含结构化 XML 格式(例如,RSS(该链接可能指向英文页面) 或 Atom(该链接可能指向英文页面))的搜索结果。
备注
SharePoint 企业级搜索不支持以 HTML 或 XHTML 格式返回结果。
SharePoint 企业级搜索根据为 OpenSearch 联合位置指定的搜索结果显示元数据来设置结果的格式,并将其显示在搜索结果用户界面中。
基于这些步骤和面向 OpenSearch 的SharePoint 企业级搜索扩展,OpenSearch 联合位置必须至少能够执行以下操作:
将查询作为 URL 发送给搜索引擎。
作为 XML 返回结果。
联合连接器必需的功能
如前面所述,根据 OpenSearch 位置的要求,联合连接器必须能够执行以下操作:
为搜索服务器的查询请求(以参数化 URL 形式发送)提供网页或 Web 服务。
从请求的 URL 参数中检索搜索查询。
以适当的格式将查询提交给存储库的搜索引擎。
将存储库的搜索结果转换为结构化的 XML 格式。
在对搜索服务器的响应中返回搜索结果 XML。
联合连接器示例应用场景
在某些搜索应用场景中,联合连接器是必需的。本节介绍了一些相关的示例应用场景,并提供了有关这些应用场景的示例联合连接器解决方案的实施细节。
备注
下面的实施细节仅供参考,只代表众多可能的解决方案中的几种。
应用场景 1:连接到 SQL Server 数据库
**应用场景背景:**连接到数据库需要 Windows 身份验证。
**可能的解决方案:**SharePoint 网站内的一个 Web 应用程序,其中包含执行以下操作的轻型 ASPX 页:
通过使用在请求 URL 中传递的搜索词来构造 SQL 查询。
以提交查询的用户身份连接到数据库。
执行 SQL 查询。
如果返回记录,则将其设置为 XML 格式,并在对搜索服务器的 ASPX 页响应中将其返回。
备注
在这种应用场景中,仅当数据库和 SharePoint 网站位于同一台服务器上时,NTLM 身份验证才起作用。如果数据库位于远程服务器上,则必须使用 Kerberos 身份验证。
应用场景 2:连接到以 HTML 格式返回结果的外部搜索网站
**应用场景背景:**网站已配置为使用匿名访问。
**可能的解决方案:**在 SharePoint 网站环境之外使用 Web 应用程序,其中包含一个执行以下操作的轻型 ASPX 页:
通过使用在初始请求 URL 中传递的搜索词将搜索请求提交到网站。
将从外部搜索网站收到的 HTML 响应中的结果转换为 RSS 格式。
在对搜索服务器的响应中返回 RSS XML。
在这种应用场景中,联合连接器的 Web 应用程序可以位于远程服务器上;但是,一个更简单的解决方案是,在 SharePoint 网站的 _layouts 文件夹中创建 Web 应用程序。
在该联合连接器解决方案的一个变体解决方案中,可以通过修改 ASPX 页以在 case 语句中包括多个网站的详细信息,来添加对多个外部搜索网站的支持。然后,为这些位置指定的查询模板可以包括自定义参数,以指定 case 语句中的哪个网站将接收联合查询。另一个变体解决方案则是组合多个外部搜索提供程序的结果,从而合并逻辑以基于相关性对结果进行排序。
应用场景 3:连接到通过对象模型公开搜索结果的后端服务器应用程序
**应用场景背景:**后端服务器应用程序已配置为使用表单身份验证,并且必须对所有查询使用相同的用户名和密码。
**可能的解决方案:**配置一个联合位置以使用企业表单身份验证,在位置定义中指定所需的用户名和密码。
联合连接器是远程服务器上运行的 Web 应用程序,其中包含执行以下操作的 ASPX 页:
检索与该请求一起传递的经过身份验证的用户凭据。
调用对象模型方法以在后端服务器应用程序中查询通过请求 URL 传递的搜索词。
将结果格式设置为 XML,并在对搜索服务器的 ASPX 页响应中返回结果。
应用场景 4:连接到通过 Web 服务公开搜索结果的后端服务器应用程序
应用场景背景: Web 服务要求为每个提交的查询提供用户凭据,并且身份验证模式是 Windows NTLM。
**可能的解决方案:**为用户 NTLM 身份验证配置联合位置。
联合连接器是远程服务器上运行的 Web 应用程序,其中包含执行以下操作的 ASPX 页:
检索与该请求一起传递的经过身份验证的用户凭据。
连接到单一登录 (SSO) 服务以获取用户的凭据。
调用 Web 服务方法以在后端服务器应用程序中查询通过请求 URL 传递的搜索词,并在请求中传递从上一步获取的凭据。
将结果格式设置为 XML,并在对搜索服务器的 ASPX 页响应中返回结果。
创建联合连接器的准则
本节包含用于确定以下内容的准则和建议:
您要创建的联合连接器的范围。
如何设置搜索结果的格式和自定义搜索结果显示方式。
设定联合连接器的创建范围
在打算创建和实施您的联合连接器时,应考虑如何回答有关联合位置的内容库的下列问题:
存储库支持何种身份验证模式?
使用的身份验证凭据应基于提交查询的用户,还是对特定联合位置的所有查询应使用相同的凭据,而不考虑提交查询的用户?
存储库的物理位置在哪里?与 SharePoint 网站位于同一服务器上还是位于远程服务器上?
您如何访问储备库的搜索功能?例如,通过下列方法之一:
Web 服务
对象模型
ASPX 页
HTML 内容
联合位置结果是否应包含存储库中的任何自定义字段?
哪些结果格式自定义(XSLT 转换)是必需的?
显示搜索结果
本节提供了有关搜索结果所需格式的详细信息,以及您可以自定义搜索结果显示的方式。
生成搜索结果 XML
在向搜索服务器返回包含结果的响应之前,您必须将结果转换为结构化的 XML 格式。我们建议您转换为用于简单自定义方案的 RSS 格式,因为这几乎不需要或者根本不需要更改联合位置的搜索结果显示元数据中的 XSL 和属性字段的默认格式。
返回自定义属性
如果联合连接器返回的搜索结果 XML 包括任何自定义属性,则除非您重写联合位置以下字段的显示元数据的默认格式,否则这些搜索结果不会显示在搜索结果用户界面中:
**属性。**在元数据列表中添加自定义属性的名称。必须在该列表中包括自定义属性,否则将无法在 XSL 中使用它。自定义属性必须是托管属性。
备注
这仅适用于 SharePoint 联合位置;而 OpenSearch 联合位置的所有属性都在 XSL 中提供。
**XSL。**更新 XSL 以显示自定义属性。
包括更多结果链接
更多结果链接是显示联合搜索位置结果的 HTML 页的 URL。若要在显示联合位置的搜索结果时包括此链接,请在此 HTML 页中包括该位置,或者创建联合连接器,以便在 HTML 页中提供搜索结果。