フルテキスト検索の概要

フルテキスト クエリでは、英語や日本語などの特定の言語の規則に基づいて語や句を操作することにより、フルテキスト インデックス内のテキスト データに対して言語検索を実行できます。フルテキスト クエリには、単純な語や句、または複数の形式の語や句を含めることができます。

フルテキスト検索はさまざまなビジネス シナリオで応用できます。たとえば、e ビジネスでは Web サイトで品目を検索できます。また、法律事務所では訴訟データのリポジトリで訴訟履歴を検索し、人事部門では保管している履歴書と職務明細書を照合できます。フルテキスト検索の基本的な管理タスクと開発タスクは、どのビジネス シナリオでも同じです。ただし、特定のビジネス シナリオで、ビジネスの目標を達成できるようにフルテキスト インデックスおよびクエリを調整することができます。たとえば e ビジネスでは、結果の順位、再呼び出しの精度 (既存の一致結果のうちフルテキスト クエリで実際に返される結果の数)、または複数言語のサポートよりも、パフォーマンスの最大化が重視されます。法律事務所では、ヒットしたすべての結果 (情報の総再呼び出し) を返すことが最も重要な要素となります。

フルテキスト検索用にデータベースを構成する方法の概要

どのシナリオでも、データベース管理者は次の基本的な手順を実行して、データベースでフルテキスト検索用のテーブル列を構成します。

  1. フルテキスト カタログを作成します。

  2. 検索する各テーブルに、次の方法でフルテキスト インデックスを作成します。

    1. フルテキスト インデックスに含めるテキスト列を特定します。

    2. バイナリ データ (varbinary(max) または image データ) として格納されたドキュメントが列に含まれている場合は、インデックスが作成される列内の各ドキュメントの型を識別するテーブル列 (型列) を指定する必要があります。

    3. 列内のドキュメントに対してフルテキスト検索で使用される言語を指定します。

    4. ベース テーブルとその列での変更を追跡するためにフルテキスト インデックスで使用する変更追跡メカニズムを選択します。

フルテキスト検索では、ワード ブレーカー、ステミング機能、ストップ ワード (ノイズ ワードとも呼ばれます) を含んだストップ リスト、類義語辞典ファイルの各言語コンポーネントを使用して、複数の言語がサポートされます。類義語辞典ファイルと (場合によって) ストップ リストは、データベース管理者が構成する必要があります。特定の類義語辞典ファイルは、対応する言語を使用するすべてのフルテキスト インデックスをサポートし、特定のストップ リストには任意の数のフルテキスト インデックスを関連付けることができます。

詳細については、「フルテキスト検索の管理」を参照してください。

フルテキスト クエリの概要

フルテキスト インデックスに列が追加されると、アプリケーションとユーザーはその列のテキストに対してフルテキスト クエリを実行できるようになります。クエリで検索できる対象は次のとおりです。

  • 1 つ以上の語または句 (単純語句)

  • 指定したテキストで始まる語または句 (プレフィックス語句)

  • 特定の語の変化形 (生成語)

  • 他の語または句に近接する語または句 (近接語句)

  • 特定の語のシノニム形 (類義語)

  • 重み付け値を使用している語または句 (重み付け語句)

フルテキスト クエリでは、少数の Transact-SQL 述語 (CONTAINS と FREETEXT) および関数 (CONTAINSTABLE と FREETEXTTABLE) が使用されます。ただし、ビジネス シナリオの検索目的によってフルテキスト クエリの構造は異なります。次に例を示します。

  • e ビジネス - Web サイト上で製品を検索する場合

    SELECT product_id FROM products WHERE CONTAINS(product_description, ”Snap Happy 100EZ” OR FORMSOF(THESAURUS,’Snap Happy’) OR ‘100EZ’) AND product_cost<200 …
    
  • 人員採用のシナリオ - SQL Server の使用経験を持つ候補者を検索する場合

    SELECT candidate_name,SSN FROM candidates WHERE CONTAINS(candidate_resume,”SQL Server”) AND candidate_division =DBA
    

詳細については、「フルテキスト検索を使用した SQL Server へのクエリ」を参照してください。

LIKE とフルテキスト検索の比較

フルテキスト検索とは異なり、LIKE Transact-SQL 述語は文字パターンにのみ有効です。また、フォーマットされたバイナリ データのクエリには LIKE 述語を使用できません。さらに、構造化されていない大量のテキスト データに対して LIKE クエリを実行すると、同じデータに対して同等のフルテキスト検索を実行する場合に比べてはるかに時間がかかります。数百万行のテキスト データに対して LIKE クエリを実行すると、結果が得られるまでに数分かかる場合があります。一方、同じデータに対してフルテキスト クエリを実行すると、返される行数にもよりますが、数秒以内で結果を取得できます。