企业级搜索管理对象模型入门

Microsoft Office SharePoint Server 2007 企业级搜索提供了一个新的搜索管理对象模型,可用来创建自定义应用程序,以通过编程方式管理企业级搜索。

企业级搜索管理对象模型在 Microsoft.Office.Server.Search.dll 中的 Microsoft.Office.Server.Search.Administration 命名空间内实现。

可以在不同类型的应用程序中编写使用企业级搜索管理对象模型的代码,这些应用程序包括:

  • 控制台应用程序

  • 在 SharePoint 网站中承载的自定义搜索 Web 部件

  • ASPX Web 应用程序

  • Windows 窗体客户端应用程序

使用搜索管理对象模型

下图详细描述了新的管理对象模型中的主要可扩展性区域。

搜索管理对象模型

SearchContext 对象

Microsoft.Office.Server.Search.Administration.SearchContext 对象是企业级搜索管理对象模型的入口点。GetContext() 方法为您指定的网站、服务器或共享服务提供程序 (SSP) 返回搜索上下文。取决于您使用的方法重载,可能需要在项目中也包括对 Microsot.Office.Server.dll 或 Microsoft.SharePoint.dll 的引用。有关 GetContext() 方法的详细信息,请参阅如何:返回搜索服务提供程序的搜索上下文

备注

安装 Microsoft Office SharePoint Server 2007 后,可能需要重新启动承载 SSP 网站的服务器,然后才能进行任何企业级搜索管理对象模型调用。

性能注意事项

如果使用 SearchContext 类的 GetContext 方法重载来检索搜索上下文,我们建议让代码在 using 语句内实例化 SPSite 对象,以确保在不再需要该对象后将其释放。以下是一个示例。

SearchContext context;
using (SPSite site = new SPSite("http://yourSiteName"))
{
     context = SearchContext.GetContext(site);
}

内容源

在企业级搜索中,利用内容源可以指定要爬网的内容、如何配置爬网以及何时计划爬网。

内容源对象模型中的顶层对象是 Content 类。初始化 Content 类的实例时,您将一个 SearchContext 对象作为构造函数中的参数传递。

Content 类的 ContentSources 属性返回 SSP 的内容源,这由 ContentSourceCollection 对象表示。

表示单个内容源的基类是 ContentSource 类。对象模型还包括以下类,以表示企业级搜索中可用的不同类型的内容源。

内容源对象模型还包含用于管理爬网计划的类。使用 ContentSource 类的 FullCrawlSchedule 属性来配置完全爬网计划。使用 ContentSource 类的 IncrementalCrawlSchedule 属性来配置增量爬网计划。

爬网计划的基类是 Schedule 类。对象模型还包含下面的派生类,可用于配置爬网计划。

有关内容源的详细信息,请参阅管理内容

内容源示例

有关如何对内容源进行编程的逐步过程,请参阅以下链接:

如何:检索共享服务提供程序的内容源

如何:添加内容源

如何:删除内容源

如何:以编程方式配置内容源的爬网计划

如何:以编程方式管理对内容源的爬网

元数据属性架构

企业级搜索元数据属性架构包含两种类型的属性:已爬网属性,在爬网内容时由搜索服务索引组件发现;托管属性,由搜索管理员管理,并显式设置为在搜索体验中使用。必须将已爬网属性映射到托管属性才能在搜索体验中使用它们。有关企业级搜索中的属性的详细信息,请参阅管理元数据

托管属性由管理员管理,并且显式设置为由查询系统使用。将已爬网属性映射到托管属性,以创建用于查询的新属性。

在管理对象模型中用于管理元数据属性的入口点是 Schema 对象。初始化 Schema 类的实例时,您将一个 SearchContext 对象作为构造函数中的参数传递。Schema 类的 AllManagedProperties 属性返回一个 ManagedPropertyCollection 对象,表示 SSP 的搜索架构中所有托管属性的集合。ManagedProperty 类表示单个托管属性。

根据所用的协议处理程序,将已爬网属性组合到不同的类别中。Schema 类的 AllCategories 属性返回一个 CategoryCollection 对象,表示 SSP 的搜索架构中所有的已爬网属性类别。Category 类表示单个已爬网属性类别。使用 Category 类的 GetAllCrawledProperties 方法为类别的已爬网属性集合返回枚举器。CrawledProperty 类表示单个已爬网属性。

架构示例

有关如何对企业级搜索架构进行编程的逐步过程,请参阅以下链接:

如何:为搜索架构中的类别检索已爬网属性

如何:检索共享服务提供程序的托管属性

如何:检索映射到托管属性的已爬网属性

如何:创建托管属性

如何:删除托管属性

如何:将已爬网属性映射到托管属性

搜索范围

在企业级搜索中,搜索范围表示项目的集合,这些项目基于该范围内的项目中的一个或多个公共元素。范围由为该范围注册的规则定义。存在着在 SSP 级别配置的全局范围,它们供配置为使用该 SSP 的所有网站使用。另外还存在着网站级别的范围,它们仅供网站和配置了子网站的网站的子网站使用。

显示组是范围的分组,可用于管理在范围列表中为不同的搜索 Web 部件(包括高级搜索和搜索框 Web 部件)显示哪些范围。

有关企业级搜索范围的详细信息,请参阅使用搜索范围

在管理对象模型中用于管理搜索范围的入口点是 Scopes 类。初始化 Scopes 类的实例时,您将一个 SearchContext 对象作为构造函数的参数传递。

AllScopes 属性返回一个 ScopeCollection 对象,表示 SSP 的所有搜索范围的集合。

AllDisplayGroups 属性返回一个 ScopeDisplayGroupCollection 对象,表示 SSP 的范围中包含的所有显示组的集合。

Scope 类表示单个搜索范围,而 ScopeDisplayGroup 类表示单个显示组。

关键字和最佳匹配

关键字是标识为对组织很重要的字词或短语。它们为搜索管理员提供一种方法,以在初始结果页面上显示其他信息和建议的链接。在下列情况下,关键字很有用:

  • 当用户经常查询未包含在内容索引中的信息时。

  • 当组织需要提升某些链接,使它们在搜索结果中位于醒目的位置时。

有关关键字、最佳匹配和定义的详细信息,请参阅管理关键字

企业级搜索关键字管理在网站级别执行。关键字对象模型中的顶层对象由 Keywords 类表示。Keywords 类的构造函数具有两个参数:一个表示 SSP 的 SearchContext 对象,以及一个表示网站 URL 的 System.Uri 对象。

Keywords 类的 AllKeywords 属性返回一个 KeywordCollection 对象,表示指定网站的所有关键字。单个关键字由 Keyword 类表示。若要访问实际的关键字词语或短语,请使用 Keyword 类的 Term 属性。描述关键字的字符串存储在 Definition 属性中。

使用 Synonyms 属性返回一个 SynonymCollection 对象,它表示关键字的所有同义字。使用 BestBets 属性返回一个 BestBetCollection 对象,它表示关键字的所有最佳匹配。

还可以使用 Keywords 类的 GetAllBestBets 方法访问为某个网站定义的所有最佳匹配。BestBet 类表示最佳匹配的单个实例,而单个同义字由 SynonymCollection 类表示。

排名

企业级搜索提供了一个相关性对象模型,可用于自定义排名引擎使用的参数。有关搜索相关性的详细信息,请参阅企业级搜索相关性体系结构概述

备注

任意更改排名参数值可能会对系统的总体相关性造成不利的影响。如果未认真评估所做的更改及其如何影响搜索结果的准确性,则不建议更改这些值。

相关性对象模型中的顶层对象由 Ranking 类表示。Ranking 类的构造函数具有一个参数:一个表示 SSP 的 SearchContext 对象。

Ranking 类的 RankingParameters 属性返回一个对象,表示 SSP 的所有排名参数。不能在此集合中添加、移除或重命名排名参数;只能修改参数值。单个排名参数由 RankingParameter 类表示。

使用 AuthorityPages 属性返回一个 AuthorityPageCollection 对象,表示为 SSP 注册的所有权威页。

使用 DemotedSites 属性返回一个 DemotedSiteCollection 对象,表示为 SSP 注册的所有降级的网站。

若要启动 SSP 的排名更新过程,请使用 StartRankingUpdate 方法。

传播

如果索引服务和查询服务在不同的服务器上运行,则搜索服务必须将内容索引从索引服务服务器复制到查询服务服务器。此过程称为传播。

企业级搜索可让您访问有关传播系统的状态信息。传播对象模型中的顶层对象是 Propagation 类。初始化 Propagation 类的实例时,您将一个 SearchContext 对象作为构造函数中的参数传递。

若要检索整个传播系统的状态,请使用 Propagation 类的 Status 属性。

若要检查单个查询服务器的传播状态,请先通过使用 Propagation 类的 QueryServers 属性来检索查询服务器的枚举器。然后,依次枚举查询服务器的集合,以检索表示查询服务器的 QueryServer 对象。

爬网日志

使用 LogViewer 对象来检索爬网日志数据。利用 LogViewer 类的 MaxDaysCrawlLogged 属性,可以设置爬网日志保留数据的最大天数。

若要处理爬网日志中的数据,请使用 CrawlLogFilters 类,它包含用于此用途的所有筛选器。此类包含一个 AddFilter() 方法(带有四个方法重载),可让您添加针对以下项目的筛选器:

  • 所有整数属性(例如 startAt、TotalEntries 和 MessageId)

  • 日志时间

  • 消息类型

  • URL

See Also

任务

如何:返回搜索服务提供程序的搜索上下文

参考

Microsoft.Office.Server.Search.Administration

概念

企业级搜索体系结构

管理内容

管理元数据

使用搜索范围

管理关键字

企业级搜索相关性体系结构概述