次の方法で共有


SharePoint の検索用 BDC モデル ファイルを強化する

BDC メタデータ モデルのプロパティについて説明します。これらのプロパティは、SharePoint の検索 で外部データをクロールできるようにする BCS インデックス コネクタに適用されます。

BDC モデル ファイルの検索プロパティ

検索 でのコネクタ フレームワークにより、外部データをクロールして、BCS インデックス コネクタによってそのデータを検索結果で使用可能にすることができます。 BCS インデックス コネクタは、外部データ ソースとの通信でクローラーが使用します。 クローラーは、クロール時に BCS インデックス コネクタを呼び出して外部システムからデータを取得し、そのデータを元のクローラーに渡します。

BCS インデックス コネクタの構成要素は以下のとおりです。

BDC モデル ファイル 外部システムへの接続情報とデータ構造を提供するファイルです。

コネクタ 外部システムに接続し、アクセス URL と BCS 識別子を解析するコードが含まれているコンポーネントです。

BDC メタデータ モデルには 検索 に適用可能なプロパティがいくつか組み込まれており、その多くは BCS インデックス コネクタ クロールをサポートするために必要とされます。

次の表に、検索 に適用される BDC モデル プロパティの説明を示します。

表 1. BDC モデル ファイルの検索プロパティ

名前 メタデータ オブジェクト 説明
ShowInSearchUI
モデル
LobSystemInstance 要素を検索ユーザー インターフェイスに表示するよう指定します。 この値は、カスタム コネクタについては無視されます。
InputUriProcessor
LobSystem
入力 URL をコネクタに渡す前に処理するクラスの名前を指定します。 .NET およびカスタム BCS インデックス コネクタに適用されます。 詳細については、「 カスタム インデックス コネクタの作成」を参照してください。
OutputUriProcessor
LobSystem
出力 URL をコネクタから検索システムに渡す前にその出力 URL を処理するクラスの名前を指定します。 .NET およびカスタム BCS インデックス コネクタに適用されます。 詳細については、「 カスタム インデックス コネクタの作成」を参照してください。
SystemUtilityTypeName
LobSystem
StructuredRepositorySystemUtility クラスを実装するクラスの名前を指定します。 カスタム BCS インデックス コネクタに適用されます。 詳細については、「 カスタム インデックス コネクタの作成」を参照してください。
タイトル
Entity
検索結果に表示する外部コンテンツ タイプのタイトルを指定します。
DefaultLocale
Entity
ロケール文字列を指定します。 この値は、 LCIDField プロパティまたは CultureField プロパティを使用して無効にできます。
RootFinder
メソッド
クロールするアイテムを列挙するために使用する Finder メソッドを指定します。 たとえば、データベースに接続する場合、これは SELECT ステートメントかクロールするテーブルのリストになります。
DirectoryLink
メソッド
BCS が関連付けの間を移動するように指定します。 階層クロールに必要です。
DeletedCountField
メソッド
削除された数の値を指定します。 このプロパティは、ゼロより大きい整数が指定されていない場合は無効にされます。
WindowsSecurityDescriptorField
メソッド
アイテムの Windows セキュリティ記述子を指定します。 指定しない場合は、 GetSecurityDescriptor メソッドが呼び出されます。 GetSecurityDescriptor が定義されていない場合は、すべての外部アイテムに Everyone アクセス制御リスト (ACL) が割り当てられます。
AuthorField
メソッド
検索結果に表示する作成者名を指定します。
DisplayUriField
メソッド
検索結果に表示する URL を指定します。 指定した場合、このプロパティは BCS によって提供されるプロファイル ページの URL を無効にします。 指定しなかった場合、検索結果に表示される URL は bdc3:// で始まり、ブラウザーによって認識されません。
LastModifiedTimeStampField
メソッド
検索結果に表示する外部アイテムのタイムスタンプを指定します。 この値は、増分クロールでも使用されます。
DescriptionField
メソッド
検索結果に表示する説明を指定します。
LCIDField
メソッド
DescriptionField のロケール ID (LCID) を指定します。 指定しない場合は、既定のワード ブレーカーが使用されます。
CultureField
メソッド
DescriptionField のカルチャを指定します。
Extension
メソッド
クロール可能なストリームのファイル名拡張子を指定します。 指定しない場合の既定の拡張子は、.txt です。
MimeType
メソッド
クロール可能なストリームの MIME の種類を指定します。 指定しない場合の既定の拡張子は、 .txt です。 Extension フィールドと MimeType フィールドの両方が指定されている場合は、 MimeType フィールドで指定した値が使用されます。
UseClientCachingForSearch
メソッド
列挙中、クローラーがコンテンツをキャッシュするかどうかを指定します。 コンテンツがキャッシュされる場合、クローラーは、個々のアイテムをクロールするときにコンテンツ ソースにもう一度トリップしません。
EnumerateIdsOnly
FilterDescriptor
IDEnumerator で ID のみを返すかどうかを指定します。
CrawlStartTime
FilterDescriptor
最後のクロールの開始時刻を格納します。
SynchronizationCookie
FilterDescriptor
クロール後に外部コンテンツ ソースから Cookie が返されることを指定します。この Cookie は、次の列挙呼び出し中にインデックス作成コネクタによって再送信されます。 外部コンテンツ ソースは、Cookie を使用して、前回のクロール以降に何が変更されたかを判断します。 このプロパティは、 ChangedIDEnumerator メソッド インスタンスと DeletedIDEnumerator メソッド インスタンスで使用されます。
プロパティ
TypeDescriptor
プロパティの検索で使用される struct 配列を指定します。 次の要素で構成されます。
  • PropertyName
  • PropertyValue
  • PropertyCulture
テキスト
TypeDescriptor
添付ファイルの検索で使用される struct 配列を指定します。 次の要素で構成されます。
  • TextExtension
  • TextContentType
  • TextValue

BDC モデル ファイルを変更して外部データをクロールするときのパフォーマンスを向上させる

検索用に有効にする外部システムの 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 番目のインスタンスを使用します。

注:

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

関連項目