フルテキスト検索フィルター

varbinary、varbinary(max)、image、または xml データ型列のドキュメントにインデックスを作成するには、追加の処理が必要です。この処理はフィルターによって実行します。フィルターは、ドキュメントから (フォーマットを解除して) 文字情報を抽出します。次に、テーブル列に関連付けられている言語のワード ブレーカー コンポーネントにテキストを送ります。

フィルターは、ドキュメント型 (.doc、.pdf、.xls、.xml など) に固有です。これらのフィルターは IFilter インターフェイスを実装しています。ドキュメント型の一覧を参照するには、sys.fulltext_document_types カタログ ビューに対してクエリを実行してください。

バイナリ ドキュメントは、単一の varbinary(max) 列または image 列に格納できます。各ドキュメントについて、SQL Server はファイル拡張子を基に正しいフィルターを選択します。ファイルが varbinary(max) 列または image 列に格納されている場合にはファイル拡張子が表示されないため、ファイル拡張子 (.doc、.xls、.pdf など) を型列と呼ばれるテーブル内の別の列に格納する必要があります。この型列は、任意の文字ベースのデータ型で、文書ファイルの拡張子 (たとえば Microsoft Word 文書の場合は .doc) を格納します。Adventure Works の Document テーブルでは、Document 列は型 varbinary(max)、型列 FileExtension は型 nvarchar(8) です。

注意

フィルターは、実装によっては、親オブジェクトに埋め込まれたオブジェクトを処理できます。ただし、SQL Server では、フィルターが他のオブジェクトへのリンクをたどるように構成されていません。

SQL Server 2008 では、独自の XML フィルターと HTML フィルターがインストールされます。さらに、オペレーティング システムに既にインストールされている Microsoft 専用形式 (.doc、.xdoc、.ppt など) のフィルターもすべて SQL Server によって読み込まれます。SQL Server のインスタンスに現在読み込まれているフィルターを確認するには、次のように sp_help_fulltext_system_components ストアド プロシージャを使用します。

EXEC sp_help_fulltext_system_components 'filter'; 

ただし、Microsoft 形式以外のフィルターを使用するには、事前にこれらのフィルターをサーバー インスタンスに読み込む必要があります。追加のフィルターのインストールの詳細については、「登録されているワード ブレーカーおよびフィルターの一覧を変更する方法 (Transact-SQL)」を参照してください。

既存のフルテキスト インデックスの型列を表示するには