SharePoint Server Search の BDC モデル ファイルの拡張

ここでは、SharePoint Server Search の BDC モデル ファイルの拡張に使用できる方法について説明します。

最終更新日: 2010年10月13日

適用対象: SharePoint Server 2010

この記事の内容
大規模データの取得時にインライン プロパティ I/O を使用する
外部システムをクロールするときの列挙の最適化
UseClientCachingForSearch プロパティでクロール速度を向上させる
BDC モデル ファイルのセキュリティ

BDC メタデータ モデルには、特に Microsoft SharePoint Server 2010 Search をサポートするために作成されたプロパティが含まれています。これらのプロパティの一覧とその説明は、「SharePoint Server Search コネクタ フレームワーク」の「BDC モデル ファイルの検索固有のプロパティ」にある表を参照してください。検索を可能にする外部システムに対して BDC モデル ファイルを作成する場合は、そのモデル ファイルを拡張して、外部システムのクロール時のパフォーマンスを最適化することができます。

大規模データの取得時にインライン プロパティ I/O を使用する

一般的に、アイテムに返されるデータの一部が大規模な場合、SpecificFinder メソッドを使用してデータを返す代わりに、次の特定メソッドを使用してデータを取得する必要があります。

  • セキュリティ アクセス制御リスト (ACL) を渡すときは、WindowsSecurityDescriptor プロパティの代わりに BinarySecurityDescriptorAccessor メソッドを使用します。

  • ストリームを渡すときは、StreamAccessor メソッドを使用します。

ネットワークの待機時間が長くない場合は、通常望ましいのは、外部システムへの余分なトリップでかかるコストよりも、パフォーマンスの向上です。

外部システムをクロールするときの列挙の最適化

外部システムの 1 回の呼び出しで、100,000 を超えるアイテムを列挙しなでください。列挙を長時間実行すると、断続的な中断が発生し、クロールが完了しない可能性があります。BDC モデルでは、以下の例に示すように、個々に列挙できる論理フォルダーにデータを構築することをお勧めします。

この例では、ColumnA に固定の値セットがある 100 万行のデータベース テーブルに対して列挙を実行します。このシナリオでは、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 キロバイトを超える場合は、このプロパティを設定しないでください。設定すると、非常に多くのキャッシュ不足が発生し、パフォーマンス向上が見込めなくなります。

BDC モデル ファイルのセキュリティ

リポジトリで NTLM 認証を使用する場合、クロールに PassThrough 認証を指定することをお勧めします。

プロファイル ページでは、フロントエンド Web サーバーからのマルチ ホップ委任の問題が原因で、Secure Store Service を使用する必要がある場合があります。この問題が発生したら、2 つの類似の LobSystemInstance インスタンスを作成することによって、プロファイル ページを許可しながら、クロールを最適化できます。最初のインスタンスでは、Secure Store Service 認証からの資格情報を使用する必要があります。このインスタンスには、ShowInSearchUI プロパティは含まれません。2 番目のインスタンスでは、PassThrough 認証を使用し、ShowInSearchUI プロパティを含める必要があります。プロファイル ページは最初の LobSystemInstance インスタンスを使用し、クローラーは 2 番目のインスタンスを使用します。

注意

これには、LobSystem レベルではなく LobSystemInstance レベルで、ShowInSearchUI プロパティを設定する必要があります。