エンタープライズ検索管理オブジェクト モデルを使うにあたって
Microsoft Office SharePoint Server 2007 でのエンタープライズ検索 に用意されている新しい検索管理オブジェクト モデルを使用すると、プログラムによって エンタープライズ検索 を管理するためのカスタム アプリケーションを作成できます。
エンタープライズ検索 管理オブジェクト モデルは、Microsoft.Office.Server.Search.dll にある Microsoft.Office.Server.Search.Administration 名前空間に実装されます。
次のような各種アプリケーションから エンタープライズ検索 管理オブジェクト モデルを使用するコードを記述できます。
コンソール アプリケーション
SharePoint サイトでホストされるカスタム検索 Web パーツ
ASPX Web アプリケーション
Windows Forms クライアント アプリケーション
検索管理オブジェクト モデルを使用する
次の図は、新しい管理オブジェクト モデルの主な拡張領域を詳細に示しています。
SearchContext オブジェクト
Microsoft.Office.Server.Search.Administration.SearchContext オブジェクトは、エンタープライズ検索 管理オブジェクト モデルへのエントリ ポイントです。GetContext() メソッドは、指定されたサイト、サーバー、または Shared Services Provider (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 プロパティは、ContentSourceCollection オブジェクトによって表される SSP のコンテンツ ソースを返します。
個々のコンテンツソースを表す基本クラスは ContentSource クラスです。このオブジェクト モデルは、エンタープライズ検索 で使用できる別の種類のコンテンツ ソースを表す次のクラスも含みます。
BusinessDataContentSource
ビジネス データ カタログ で構成されたアプリケーションのコンテンツを含めるために使用します。CustomContentSource
カスタム コンテンツ ソースのコンテンツを含めるために使用します。ExchangePublicFolderContentSource
Microsoft Exchange Server のパブリック フォルダの内容を含めるために使用します。FileShareContentSource
ファイル共有コンテンツを含めるために使用します。HierarchicalContentSource
FileShareContentSource や ExchangePublichFolderContentSource などの階層型のコンテンツ ソースの基本クラスです。LotusNotesContentSource
Lotus Notes のコンテンツを含めるために使用します。SharePointContentSource
Windows SharePoint Services のコンテンツをすべて含みます。WebContentSource
Web コンテンツを含めるために使用します。
コンテンツ ソース オブジェクト モデルも、クロール スケジュールを管理するためのクラスを含みます。完全クロール スケジュールを構成するには、ContentSource クラスの FullCrawlSchedule プロパティを使用します。増分クロール スケジュールを構成するには、ContentSource クラスの IncrementalCrawlSchedule プロパティを使用します。
クロール スケジュールの基本クラスは Schedule クラスです。このオブジェクト モデルは、クロール スケジュールを構成するために使用する、次の派生クラスも含みます。
DailySchedule
クロールとクロールの間の日数を指定します。WeeklySchedule
クロールとクロールの間の週数を指定します。MonthlyDateSchedule
クロールが発生する月日および月を指定するために使用します。MonthlyDayOfWeekSchedule
クロールが発生する月日、月の週、月を指定するために使用します。
コンテンツ ソースの詳細については、「コンテンツを管理する」を参照してください。
コンテンツ ソースの例
コンテンツ ソースをプログラミングするための段階を追った手順については、次のトピックを参照してください。
[方法] 共有サービス プロバイダのコンテンツ ソースを取得する
[方法] コンテンツ ソースのクロール スケジュールをプログラムで構成する
[方法] コンテンツ ソースのクロールをプログラム的に管理する
メタデータ プロパティ スキーマ
エンタープライズ検索 メタデータ プロパティ スキーマには、コンテンツのクロール時に検索サービス インデックス コンポーネントによって見つかったクロール プロパティと、検索管理者によって管理され、検索時に使用されるように明示的に設定される管理プロパティという 2 種類のプロパティがあります。クロール プロパティを検索時に使用するには、管理プロパティにマップする必要があります。エンタープライズ検索 のプロパティの詳細については、「メタデータを管理する」を参照してください。
管理プロパティは管理者によって管理され、クエリ システムによって使用されるように明示的に設定されます。クエリで使用する新しいプロパティを作成するには、クロール プロパティを管理プロパティにマップします。
管理オブジェクト モデルのメタデータ プロパティを管理するためのエントリ ポイントは Schema オブジェクトです。Schema クラスのインスタンスを初期化するときは、SearchContext オブジェクトを コンストラクタのパラメータとして渡します。Schema クラスの AllManagedProperties プロパティは、SSP の検索スキーマ内のすべての管理プロパティのコレクションを表す ManagedPropertyCollection オブジェクトを返します。ManagedProperty クラスは、単一の管理プロパティを表します。
クロール プロパティは、使用されるプロトコル ハンドラに基づいて、異なるカテゴリにグループ化されます。Schema クラスの AllCategories プロパティは、SSP の検索スキーマ内のすべてのクロール プロパティのカテゴリを表す CategoryCollection オブジェクトを返します。Category クラスは、単一のクロール プロパティ カテゴリを表します。クロール プロパティ カテゴリのコレクションの列挙体を返すには、Category クラスの GetAllCrawledProperties メソッドを使用します。CrawledProperty クラスは、単一のクロール プロパティを表します。
スキーマの例
エンタープライズ検索 スキーマを使用してプログラミングするためのステップ バイ ステップの操作手順については、次のトピックを参照してください。
[方法] Search スキーマ内のカテゴリについてクロールされたプロパティを取得する
[方法] 共有サービス プロバイダの管理プロパティを取得する
[方法] 管理プロパティにマップされたクロール プロパティを取得する
検索範囲
エンタープライズ検索 では、検索範囲は、共通する要素に基づくアイテムのコレクションまたはその範囲内のアイテムの間の要素を表します。範囲は、その範囲のために登録されたルールによって定義されます。SSP レベルで構成されたグローバルな範囲があり、その SSP を使用するように構成されたすべてのサイトで使用できます。サイト レベルの範囲もあります。サイト レベルの範囲は構成されたサイトとサイトのサブサイトだけが使用できます。
表示グループは範囲のグループであり、異なる検索 Web パーツ (高度な検索および検索ボックス Web パーツを含みます) の範囲リストに表示される範囲を管理するために使用できます。
エンタープライズ検索 における範囲の詳細については、「検索範囲を使用する」を参照してください。
管理オブジェクト モデルの検索範囲を管理するためのエントリ ポイントは Scopes クラスです。Scopes クラスのインスタンスを初期化するときは、SearchContext オブジェクトを、コンストラクタのパラメータとして 渡します。
AllScopes プロパティは、SSP のすべての検索範囲のコレクションを表す ScopeCollection オブジェクトを返します。
AllDisplayGroups プロパティは、SSP の範囲内のすべての表示グループのコレクションを表す ScopeDisplayGroupCollection オブジェクトを返します。
Scope クラスは単一の検索範囲を表し、ScopeDisplayGroup クラスは単一の表示グループを表します。
キーワードとおすすめコンテンツ
キーワードは、組織にとって重要であると識別された単語または語句です。キーワードは、検索管理者が最初の結果ページに追加情報や推奨リンクを表示する方法を提供します。キーワードは、次のシナリオで効果的に使用できます。
ユーザーが、コンテキスト インデックスに含まれない情報を繰り返しクエリするとき。
組織が、特定のリンクを推奨する必要があり、検索結果の中の見やすい場所に表示するとき。
キーワード、おすすめコンテンツ、および定義の詳細については、「キーワードの管理」を参照してください。
エンタープライズ検索 キーワードの管理は、サイト レベルで実行されます。キーワード オブジェクト モデルの最上位レベルのオブジェクトは、Keywords クラスによって表されます。Keywords クラスのコンストラクタは、SSP を表す SearchContext オブジェクトと、サイトの URL を表す System.Uri オブジェクトという 2 つのパラメータを使用します。
Keywords クラスの AllKeywords プロパティは、指定したサイトのすべてのキーワードを表す KeywordCollection オブジェクトを返します。個々のキーワードは、Keyword クラスによって表されます。キーワードの実際の用語または語句にアクセスするには、Keyword クラスの Term プロパティを使用します。キーワードを記述する文字列は、Definition プロパティに格納されます。
キーワードのすべての同意語を表す SynonymCollection オブジェクトを返すには、Synonyms プロパティを使用します。キーワードのすべてのおすすめコンテンツを表す BestBetCollection オブジェクトを返すには、BestBets プロパティを使用します。
また、Keywords クラスの GetAllBestBets メソッドを使用することで、サイトに対して定義されたすべてのおすすめコンテンツにアクセスできます。BestBet クラスは、おすすめコンテンツの単一のインスタンスを表し、個々の同意語は、SynonymCollection クラスによって表されます。
ランキング
エンタープライズ検索 には、ランキング エンジンによって使用されるパラメータをカスタマイズするために使用できる、関連性オブジェクト モデルが用意されています。検索の関連性の詳細については、「エンタープライズ検索の関連性アーキテクチャの概要」を参照してください。
注意
ランキング パラメータを任意に変更すると、システムの全体的な関連性に悪影響を与える可能性があります。変更および変更が検索結果の正確性に与える影響について慎重に評価せずに変更を行うことはお勧めしません。
関連性オブジェクト モデルの最上位オブジェクトは、Ranking クラスによって表されます。Ranking クラスのコンストラクタは、SSP を表す SearchContext オブジェクトという、1 つのパラメータを使用します。
Ranking クラスの RankingParameters プロパティは、SSP のすべてのランキング パラメータを表すオブジェクトを返します。コレクションに対するランキング パラメータの追加と削除、または名前の変更は実行できません。実行できるのは、パラメータ値の変更だけです。個々のランキング パラメータは、RankingParameter クラスによって表されます。
SSP に登録されたすべての許可ページを表す AuthorityPageCollection オブジェクトを返すには、AuthorityPages プロパティを使用します。
SSP に登録されたすべての下位サイトを表す DemotedSiteCollection オブジェクトを返すには、DemotedSites プロパティを使用します。
SSP のランキング更新プロセスを開始するには、StartRankingUpdate メソッドを使用します。
伝達
インデックス サービスとクエリ サービスが別のサーバーで実行されている場合、検索サービスは、コンテンツ インデックスをインデックス サービス サーバーからクエリ サービス サーバーにコピーする必要があります。このプロセスの名前が伝達です。
エンタープライズ検索 には、伝達システムに関するステータス情報にアクセスするための機能が用意されています。伝達オブジェクト モデルの最上位レベルのオブジェクトは Propagation クラスです。Propagation クラスのインスタンスを初期化するときは、SearchContext オブジェクトをコンストラクタのパラメータとして渡します。
伝達システム全体のステータスを取得するには、Propagation クラスの Status プロパティを使用します。
個々のクエリ サーバーの伝達ステータスをチェックするには、Propagation クラスの QueryServers プロパティを使用して、クエリ サーバーの列挙体を先に取得します。次に、クエリ サーバーのコレクションを列挙して、エリ サーバーを表す QueryServer オブジェクトを取得します。
クロール ログ
LogViewer オブジェクトを使用して、クロール ログ データを取得できます。LogViewer クラスの MaxDaysCrawlLogged プロパティを使用して、クロール ログにデータを保持する最大日数を設定できます。
クロール ログのデータを操作するには、この目的のために使用されるすべてのフィルタを含む CrawlLogFilters クラスを使用します。このクラスは、次のアイテムを対象とするフィルタを追加できる 4 つのメソッド オーバーロードがある AddFilter() メソッドを含みます。
すべての整数プロパティ (startAt、TotalEntries、MessageId など)
ログ時刻
メッセージの種類
URL
See Also
タスク
参照
Microsoft.Office.Server.Search.Administration