次の方法で共有


FREETEXTTABLE (Transact-SQL)

更新 : 2006 年 7 月 17 日

文字ベースのデータ型を含む列に対して、freetext_string で指定したテキストの並びと正確に一致しなくても、意味が一致する値を検索し、0 行、1 行、またはそれ以上の行で構成されるテーブルを返します。FREETEXTTABLE は、SELECT ステートメントの FROM 句の中で通常のテーブル名のように指定できます。

FREETEXTTABLE を使用するクエリでは、フリーテキスト タイプのフルテキスト クエリを指定して、各行の関連順位値 (RANK) とフルテキスト キー (KEY) を取得します。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

FREETEXTTABLE (table , { column_name | (column_list) | * } 
          , 'freetext_string' 
     [ ,LANGUAGE language_term ] 
     [ ,top_n_by_rank ] )

引数

  • table
    フルテキスト クエリ用に指定されているテーブルの名前を指定します。table または view には、1 ~ 3 つの要素で構成されるデータベース オブジェクト名を指定します。ビューに対してクエリを実行する場合は、フルテキスト インデックスが作成されたベース テーブルを 1 つだけ指定できます。

    詳細については、「Transact-SQL 構文表記規則 (Transact-SQL)」を参照してください。

    table にサーバー名は指定できません。また、リンク サーバーに対するクエリでは使用できません。

  • column_name
    table にある、検索対象の列の名前を指定します。フルテキスト検索には、charvarcharncharnvarchartextntextimagexmlvarbinary(max) のデータ型の列が対応しています。
  • column_list
    コンマ区切りで複数の列を指定できます。column_list はかっこで囲む必要があります。language_term を指定しない場合、column_list で指定するすべての列の言語は同じにする必要があります。
  • *
    フルテキスト検索用に登録されているすべての列を使用して、指定した freetext_string を検索します。language_term を指定しない場合、テーブル内にあるすべてのフルテキスト インデックス付きの列の言語は、同じであることが必要です。
  • freetext_string
    column_name の列で検索するテキストを指定します。単語、フレーズ、文など、あらゆるテキストを入力できます。用語または一定の形式になっている用語がフルテキスト インデックス内に見つかった場合、一致するものと判断されます。

    CONTAINS 検索条件では AND はキーワードになりますが、freetext_string では 'and' はノイズ語と見なされ、破棄されます。

    WEIGHT、FORMSOF、ワイルドカード、NEAR、およびその他の構文は使用できません。freetext_string は単語、語幹に分割され、類義語がチェックされて渡されます。freetext_string を二重引用符 (") で囲むと、代わりにフレーズ マッチが実行され、語幹への分割と類義語のチェックは行われません。

  • LANGUAGE language_term
    FREETEXTTABLE クエリにおいて、単語、語幹への分割、類義語のチェック、およびノイズ語の破棄を行うときに使用する言語リソースの言語を指定します。このパラメータは省略可能で、言語のロケール識別子 (LCID) に対応する文字列、整数、または 16 進数の値を指定できます。language_term を指定した場合、その言語は検索条件のすべての要素に適用されます。値を指定しなかった場合は、列のフルテキストの言語が使用されます。

    language_term を文字列で指定する場合は、syslanguages システム テーブルの alias 列の値と同じ値を指定します。文字列の場合は、'language_term' のように引用符 (') で囲む必要があります。language_term を整数で指定する場合は、その言語を表す実際の LCID を指定します。language_term を 16 進数の値で指定する場合は、"0x" の後に LCID の 16 進数の値を指定します。16 進数の値は、先頭の 0 を含め、8 桁以内で指定してください。

    値を 2 バイト文字セット (DBCS) の形式で指定すると、Microsoft SQL Server で Unicode に変換されます。

    指定した言語が無効であるか、その言語に該当するリソースがインストールされていない場合は、エラーが返されます。ニュートラル言語リソースを使用するには、language_term に "0x0" を指定してください。

  • top_n_by_rank
    整数値 n を指定した場合、FREETEXTTABLE では一致する値が順位付けされ、その上位 n 件のみが返されます。

    FREETEXTTABLE 述語と共にフィルタ選択を実行すると、上位 n 行にフィルタが適用され、その結果 top_n_by_rank で指定した行数よりも少ない行が返されます。sp_configure ストアド プロシージャで precompute rank オプションを有効にすると、top_n_by_rank パラメータを使用する FREETEXTTABLE クエリのパフォーマンスを向上させることができます。詳細については、「sp_configure (Transact-SQL)」および「sp_fulltext_service (Transact-SQL)」を参照してください。

解説

FREETEXTTABLE では、FREETEXT 述語と同じ検索条件が使用されます。

CONTAINSTABLE と同様、返されるテーブルには KEYRANK という名前の列が含まれます。これらの列は、適切な行を取得したり、行の順位値を使用するために、クエリ内で参照されます。

FREETEXTTABLE は、互換性レベルが 70 未満の場合はキーワードとして認識されません。詳細については、「sp_dbcmptlevel (Transact-SQL)」を参照してください。

権限

FREETEXTTABLE を呼び出すには、指定されるテーブルまたは参照されるテーブル列に対して適切な SELECT 権限が必要です。

次の例では、sweetcandybreaddry、または meat に関連するすべてのカテゴリについて、そのカテゴリ名と説明を返します。

ms177652.note(ja-jp,SQL.90).gifメモ :
この例を実行するには、Northwind データベースをインストールする必要があります。Northwind データベースのインストール方法については、「Northwind サンプル データベースと pubs サンプル データベースのダウンロード」を参照してください。
USE Northwind;
SELECT FT_TBL.CategoryName 
    ,FT_TBL.Description
    ,KEY_TBL.RANK
FROM dbo.Categories AS FT_TBL 
    INNER JOIN FREETEXTTABLE(dbo.Categories, Description, 
        'sweetest candy bread and dry meat') AS KEY_TBL
        ON FT_TBL.CategoryID = KEY_TBL.[KEY];
GO

次の例は前と同じ例を使って、LANGUAGElanguage_term パラメータと top_n_by_rank パラメータの使用法を示しています。

USE Northwind;
SELECT FT_TBL.CategoryName 
    ,FT_TBL.Description
    ,KEY_TBL.RANK
FROM dbo.Categories AS FT_TBL 
    INNER JOIN FREETEXTTABLE(dbo.Categories, Description, 
        'sweetest candy bread and dry meat',LANGUAGE 'English',2) 
        AS KEY_TBL
        ON FT_TBL.CategoryID = KEY_TBL.[KEY];
GO
ms177652.note(ja-jp,SQL.90).gifメモ :
top_n_by_rank パラメータを使用するために、LANGUAGE language_term パラメータは必須ではありません。

変更履歴

リリース 履歴

2006 年 7 月 17 日

追加内容 :
  • LANGUAGE 引数の例を追加しました。

参照

関連項目

CONTAINS (Transact-SQL)
CONTAINSTABLE (Transact-SQL)
FREETEXT (Transact-SQL)
行セット関数 (Transact-SQL)
SELECT (Transact-SQL)
WHERE (Transact-SQL)

その他の技術情報

フルテキスト検索を使用した SQL Server へのクエリ
precompute rank オプション

ヘルプおよび情報

SQL Server 2005 の参考資料の入手