varbinary(max) 列および xml 列のクエリ (フルテキスト検索)

varbinary(max) 列、varbinary 列、または xml 列にフルテキスト インデックスが設定されている場合は、他のフルテキスト インデックス列と同様に、フルテキスト述語 (CONTAINS および FREETEXT) とフルテキスト関数 (CONTAINSTABLE および FREETEXTTABLE) を使用して、これらの列に対するクエリを実行できます。

重要な注意事項重要

フルテキスト検索は image 列に対しても実行できます。ただし、image データ型は SQL Server の今後のバージョンでは削除される予定です。新規の開発作業ではこのデータ型を使用せず、現在このデータ型を使用しているアプリケーションの変更を検討してください。代わりに、varbinary(max) データ型を使用します。

varbinary(max) データまたは varbinary データ

単一の varbinary(max) 列または varbinary 列には、さまざまな型のドキュメントを格納できます。SQL Server 2008 では、専用のフィルタがオペレーティング システムにインストールされ、使用できるようになっている任意のドキュメント型がサポートされます。各ドキュメントのドキュメント型は、ドキュメントのファイル拡張子によって識別されます。たとえば、ファイル拡張子が .doc である場合、フルテキスト検索では、Microsoft Word ドキュメントをサポートするフィルタが使用されます。使用可能なドキュメント型の一覧を確認するには、sys.fulltext_document_types カタログ ビューに対してクエリを実行してください。

Full-Text Engine では、オペレーティング システムにインストールされている既存のフィルタを利用できます。オペレーティング システムのフィルタ、ワード ブレーカ、およびステミング機能を使用する前に、次のコードを実行してこれらのリソースをサーバー インスタンスに読み込む必要があります。

EXEC sp_fulltext_service @action='load_os_resources', @value=1;

varbinary(max) 列にフルテキスト インデックスを作成するには、Full-Text Engine が varbinary(max) 列にあるドキュメントのファイル拡張子にアクセスする必要があります。この情報は、型列と呼ばれるテーブル列に格納されている必要があります。型列は、フルテキスト インデックスの varbinary(max) 列に関連付けられている必要があります。Full-Text Engine は、ドキュメントにインデックスを作成する際に、型列のファイル拡張子を参照して使用するフィルタを特定します。

xml データ

xml データ型の列には、XML ドキュメントと XML フラグメントのみが格納されます。XML ドキュメントには XML フィルタのみが使用されるため、型列は必要ありません。xml 列では、フルテキスト インデックスによって XML 要素のコンテンツにインデックスが設定されますが、XML マークアップは無視されます。属性値には、数値でない限り、フルテキスト インデックスが設定されます。要素タグはトークンの境界として使用されます。複数言語を含む整形式の XML または HTML ドキュメントやフラグメントはサポートされます。

xml 列に対するクエリの実行の詳細については、「XML 列のフルテキスト インデックス」を参照してください。