如何:以编程方式管理对内容源的爬网
企业级搜索管理对象模型中的 ContentSource 类提供了几种方法,可以用于在特定内容源的爬网计划之外以编程方式启动、停止、暂停和恢复爬网。还可以使用几种 ContentSource 类属性检查内容源的爬网状态。
以下过程中的步骤介绍如何执行以下任务:
设置控制台应用程序以使用企业级搜索管理对象模型。
检索特定内容源。
执行该内容源的各种爬网管理任务。
还可以用编程方式设置内容源的爬网计划。有关详细信息,请参阅如何:以编程方式配置内容源的爬网计划。
设置应用程序以使用企业级搜索管理对象模型
在应用程序引用以下 DLL:
Microsoft.SharePoint.dll
Microsoft.Office.Server.dll
Microsoft.Office.Server.Search.dll
在控制台应用程序的类文件中,将以下 using 语句添加到具有其他命名空间指令的代码顶部附近。
using Microsoft.SharePoint; using Microsoft.Office.Server.Search.Administration;
创建用于向控制台窗口写入使用信息的函数。
private static void Usage() { Console.WriteLine("Manage Content Source Crawl Status"); Console.WriteLine("Usage: ManageCrawlStatus.exe <ContentSource>"); Console.WriteLine("<ContentSourceName> - Specify the content source name."); }
在控制台应用程序的 Main() 函数中,添加检查 args[] 参数中项数的代码;如果小于 1,则表示没有指定值以标识内容源,然后调用上一步中定义的 Usage() 函数。
if (args.Length < 1 ) { WriteUsage(); return; }
检索特定内容源
添加以下代码,为共享服务提供程序 (SSP) 搜索上下文检索 Content 对象:
/* Replace <SiteName> with the name of a site using the SSP */ string strURL = "http://<SiteName>"; Content sspContent = new Content(SearchContext.GetContext(new SPSite(strURL)));
有关搜索上下文的检索方法的详细信息,请参阅如何:返回搜索服务提供程序的搜索上下文。
检索内容源的集合。
ContentSourceCollection sspContentSources = sspContent.ContentSources;
检索 args[] 参数第一项中指定的值,该值指明要检索的内容源的名称。
string strContentSourceName = args[0];
从内容源集合中检索指定名称的内容源。
ContentSource cs = sspContentSources[strContentSourceName]; <…>
启动对内容源的增量爬网
将“<…>”占位符替换为以下代码。
cs.StartIncrementalCrawl(); break;
启动对内容源的完全爬网
将“<…>”占位符替换为以下代码。
cs.StartFullCrawl(); break;
暂停进行中的爬网
将“<…>”占位符替换为以下代码。
cs.PauseCrawl(); break;
恢复暂停的爬网
将“<…>”占位符替换为以下代码。
cs.ResumeCrawl(); break;
停止对内容源的爬网
将“<…>”占位符替换为以下代码。
cs.StopCrawl(); break;
检查内容源的爬网状态值
使用 ContentSource 对象的属性可以检查内容源的几个爬网状态值。以下示例介绍如何检查这些属性。
Console.WriteLine("Crawl Status = " + cs.CrawlStatus); Console.WriteLine("Crawl started at: " + cs.CrawlStarted.ToString()); Console.WriteLine("Crawl completed at: " + cs.CrawlCompleted.ToString());