フルテキスト検索クエリ

Microsoft SQL Server 2005 でフルテキスト クエリを記述するには、CONTAINS 述語と FREETEXT Transact-SQL 述語、および CONTAINSTABLE と FREETEXTTABLE の各行セット値関数の使用方法を理解する必要があります。

CONTAINS 述語と FREETEXT 述語は、SELECT ステートメントの WHERE 句の中でのみ使用できます。CONTAINSTABLE と FREETEXTTABLE の行セット値関数は、SELECT ステートメントの FROM 句でのみ使用できます。

CONTAINS 述語では、テキスト データの列から次の語や句を検索するための豊富な構文がサポートされています。

  • 1 つ以上の語または句 (単純語句)
    フルテキスト検索では、語はトークンと見なされます。トークンは、指定された言語の文字種による規則に従って、適切なワード ブレーカによって識別されます。句は、複数の語から構成されます。句読点を含む場合も含まない場合もあります。たとえば、"croissant" は語、"café au lait" は句です。このような語や句は単純語句と呼ばれています。
  • 特定の語の変化形 (生成語)
    たとえば、"drive" という語の変化形を検索します。テーブルのさまざまな行に、"drive"、"drives"、"drove"、"driving"、および "driven" が含まれている場合、これらはどれも drive という語から変化して生成されているので結果セットに入ります。
  • 特定の語のシノニム形 (類義語)
    たとえば、エントリ "{car, automobile, truck, van}" が類義語辞典に追加されると、"car" という語の類義語形式を検索できます。"automobile"、"truck"、"van"、または "car" という語は、"car" という語を含むシノニムの拡張セットに属しているため、クエリ処理されるテーブルの行のうち、これらのいずれかの語を含むすべての行が結果セットに表示されます。類義語辞典ファイルの詳細については、「類義語辞典ファイルの構成」を参照してください。
  • 指定したテキストで始まる語または句 (プレフィックス語句)
    句の場合、句を構成する各語がプレフィックスと見なされます。たとえば、"auto tran*" は "automatic transmission" や "automobile transducer" に一致しますが、"automatic motor transmission" には一致しません。
  • 重み付け値を使用している語または句 (重み付け語句)
    たとえば、複数の語句を検索するクエリでは、検索条件の各検索語に、他の語との相対的な重要性を示す重み付け値を割り当てることができます。この種のクエリ結果では、検索語に割り当てた相対的な重みに従って、最も関連性の高い行が最初に返されます。
  • 他の語または句に近接する語または句 (近接語句)
    たとえば、"ice" という語の近くに "hockey" という語がある行や、"ice skating" という句の近くに "ice hockey" という句がある行を検索できます。

CONTAINS 述語は、ブール演算子の AND、OR、AND NOT を使用してこれらの語句を結合できます。たとえば、フルテキスト インデックスが付けられた同じ列で "latte" と "New York-style bagel" という語句を含むすべての行を検索できます。AND NOT を使用すれば特定の語句を否定できます。たとえば、「"bagel" and not "cream cheese"」のように使用します。

CONTAINS を使用する場合、SQL Server はノイズ ワードは検索基準から破棄します。ノイズ ワードとは、テキストの検索時に頻出しても実際の検索には役に立たない語です。たとえば、"a"、"and"、"is"、および "the" はノイズ ワードです。ノイズ ワードの詳細については、「ノイズ語」を参照してください。

参照

概念

フルテキスト検索を使用した SQL Server へのクエリ

その他の技術情報

CONTAINS (Transact-SQL)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手