[方法] コンテンツ ソースのクロールをプログラム的に管理する
エンタープライズ検索 管理オブジェクト モデルの 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());
See Also
タスク
[方法] 共有サービス プロバイダのコンテンツ ソースを取得する
[方法] コンテンツ ソースのクロール スケジュールをプログラムで構成する