增强 SharePoint Server 搜索的 BDC 模型文件

本主题提供有关可用来增强 SharePoint Server 搜索的 BDC 模型文件的方法的信息。

上次修改时间: 2010年10月13日

适用范围: SharePoint Server 2010

本文内容
检索大规模数据时使用内联属性 I/O
对外部系统进行爬网时枚举优化
使用 UseClientCachingForSearch 属性提高爬网速度
BDC 模型文件中的安全性

BDC 元数据模型包含专门设计为支持 Microsoft SharePoint Server 2010 搜索的属性。有关这些属性的列表及其说明,请参阅 SharePoint Server 搜索连接器框架中的 BDC 模型文件中特定于搜索的属性表。当您需要为希望启用搜索的外部系统创建 BDC 模型文件时,可以在对外部系统进行爬网时增强模型文件来优化性能。

检索大规模数据时使用内联属性 I/O

通常,如果为某一项返回的数据是大规模的,则应使用以下专用方法之一来检索数据,而不是使用 SpecificFinder 方法返回数据:

  • 在传递安全访问控制列表 (ACL) 时使用 BinarySecurityDescriptorAccessor 方法,而不使用 WindowsSecurityDescriptor 属性。

  • 传递数据流时使用 StreamAccessor 方法。

除非网络延迟很高,否则相比额外访问外部系统带来的成本来说,性能改进通常要更好一些。

对外部系统进行爬网时枚举优化

每次调用外部系统时枚举的项数不要超过 100,000 个。长时间运行的枚举可能会导致间歇性中断,并阻止爬网完成。建议您的 BDC 模型将数据构造成可单独枚举的逻辑文件夹,如以下示例所示。

该示例演示对包含一百万行但 ColumnA 中包含一组固定值的数据库表进行枚举。在此方案中,您可以将 ColumnA 视为外部内容类型,并使用以下 SQL 语句为这组值编写一个枚举器。

SELECT DISTINCT( ISNULL(ColumnA,'unknown')) as ColumnA  FROM table

接下来,使用以下 SQL 语句定义特定查找器。

SELECT DISTINCT( ISNULL(ColumnA,'unknown')) as ColumnA  FROM table where ColumnA = @Value

最后,必须定义关联导航操作,如下所示。

Select * from table where ColumnA=@value

任何方法都应在 2 分钟内开始返回结果,否则爬网程序将取消调用。例如,使用 LIKE 子句的复杂 SQL 语句可能需要 2 分钟以上的时间才能完成,这将导致爬网程序取消调用。

使用 UseClientCachingForSearch 属性提高爬网速度

UseClientCachingForSearch 属性通过在枚举期间缓存项来提高完全爬网的速度。当实现基于更改日志的增量爬网时,也推荐使用此属性,因为它能提高增量爬网速度。

重要注释重要说明

如果各项平均大于 30 KB,则不设置此属性,因为这将会导致大量缓存丢失,性能也会下降。

BDC 模型文件中的安全性

如果存储库使用 NTLM 身份验证,则建议您指定 PassThrough 身份验证进行爬网。

由于前端 Web 服务器中存在多跃点委派问题,因此配置文件页可能要求您使用 Secure Store Service。如果您遇到此问题,则可以通过创建两个类似的 LobSystemInstance 实例,优化爬网,同时仍然允许配置文件页。第一个实例应使用 Secure Store Service 身份验证中的凭据。该示例不应包含 ShowInSearchUI 属性。第二个实例应使用 PassThrough 身份验证,还应包含 ShowInSearchUI 属性。配置文件页使用第一个 LobSystemInstance 实例,而爬网程序使用第二个实例。

备注

这要求您在 LobSystemInstance 级别而不是在 LobSystem 级别设置 ShowInSearchUI 属性。