フルテキスト検索 (SQL Server)

SQL Server 2008 には、アプリケーションやユーザーが SQL Server テーブル内の文字ベースのデータに対してフルテキスト クエリを実行するための機能が備わっています。フルテキスト クエリを特定のテーブルに対して実行するには、まずデータベース管理者がテーブル上にフルテキスト インデックスを作成する必要があります。フルテキスト インデックスには、テーブルの 1 つ以上の文字ベースの列が含まれます。この列のデータ型は、char、varchar、nchar、nvarchar、text、ntext、image、xml、varbinary(max) のいずれかになります。各フルテキスト インデックスによってベース テーブルの 1 つ以上の列にインデックスが設定され、列ごとに言語を指定できます。SQL Server 2008 以降のフルテキスト検索では、英語、スペイン語、中国語、日本語、アラビア語、ベンガル語、ヒンディー語など 50 種類以上の言語がサポートされています。サポートされているフルテキスト言語の一覧は、「sys.fulltext_languages (Transact-SQL)」を参照してください。

SQL Server では、サポートされている言語ごとに、ワード ブレーカー、ステミング機能、空の類義語辞典ファイルなどの言語固有の言語コンポーネントが用意されています。また、SQL Server では、フルテキスト言語ごとに、検索クエリのスコープを拡張するために言語固有のシノニムを必要に応じて定義できるファイル (類義語辞典ファイル) も用意されています。さらに、SQL Server 2008 以降では、システム ストップ リストが用意されています。特定の言語シナリオまたはビジネス シナリオをサポートするために、ストップ ワード (ノイズ ワード) を追加したり削除したりしてシステム ストップ リストを変更でき、必要に応じて追加のストップ リストを作成できます。

フルテキスト クエリを記述するために、SQL Server には、フルテキスト述語のセット (CONTAINS と FREETEXT) および行セット値関数 (CONTAINSTABLE と FREETEXTTABLE) が用意されています。アプリケーションやユーザーは、これらの述語と関数を使用して、単一の語または句の検索 (必要に応じて結果セットの順位付け)、他の語または句に近接する語または句の検索、特定の語のシノニム形の検索などのさまざまなタイプのフルテキスト検索を実行できます。

注意

フルテキスト検索は、SQL Server データベース エンジンのオプションのコンポーネントです。詳細については、「SQL Server 2008 R2 のインストール」を参照してください。

このセクションの内容