FREETEXTTABLE (Transact-SQL)FREETEXTTABLE (Transact-SQL)

適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database

は、SELECT ステートメントのfrom 句で使用される関数で、 Transact-SQLTransact-SQL SQL ServerSQL Server 文字ベースのデータ型を含むフルテキストインデックス列に対してフルテキスト検索を実行します。Is a function used in the FROM clause of a Transact-SQLTransact-SQL SELECT statement to perform a SQL ServerSQL Server full-text search on full-text indexed columns containing character-based data types. この関数は、指定されたfreetext_string内のテキストの正確な表現だけでなく、意味に一致する値を含む列について、0行、1行、または複数の行から成るテーブルを返します。This function returns a table of zero, one, or more rows for those columns containing values that match the meaning and not just the exact wording, of the text in the specified freetext_string. FREETEXTTABLE は、通常のテーブル名のように参照されます。FREETEXTTABLE is referenced as if it were a regular table name.

FREETEXTTABLE は、 FREETEXT (transact-sql)と同じ種類の一致に便利です。FREETEXTTABLE is useful for the same kinds of matches as the FREETEXT (Transact-SQL),

FREETEXTTABLE を使用するクエリでは、各行の関連順位値 (RANK) とフルテキストキー (キー) が返されます。Queries using FREETEXTTABLE return a relevance ranking value (RANK) and full-text key (KEY) for each row.

注意

SQL ServerSQL Server でサポートされているフルテキスト検索の形式については、「フルテキスト検索でのクエリ」を参照してください。For information about the forms of full-text searches that are supported by SQL ServerSQL Server, see Query with Full-Text Search.

(https://azure.microsoft.com/documentation/articles/sql-database-preview-whats-new/?WT.mc_id=TSQL_GetItTag)).|(https://azure.microsoft.com/documentation/articles/sql-database-preview-whats-new/?WT.mc_id=TSQL_GetItTag)).|

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

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

引数Arguments

テーブルtable
フルテキストクエリ用にマークされているテーブルの名前を指定します。Is the name of the table that has been marked for full-text querying. テーブルまたはビューには、1、2、または3つの要素で構成されるデータベースオブジェクト名を指定できます。table or viewcan be a one-, two-, or three-part database object name. ビューに対してクエリを実行する場合は、フルテキスト インデックスが作成されたベース テーブルを 1 つだけ指定できます。When querying a view, only one full-text indexed base table can be involved.

テーブルにサーバー名を指定することはできません。また、リンクサーバーに対するクエリでは使用できません。table cannot specify a server name and cannot be used in queries against linked servers.

column_namecolumn_name
FROM 句で指定したテーブルのフルテキスト インデックス付きの列の名前を指定します。Is the name of one or more full-text indexed columns of the table specified in the FROM clause. 列には、charvarcharncharnvarchartextntextimagexmlvarbinaryvarbinary(max) のいずれかの型を指定できます。The columns can be of type char, varchar, nchar, nvarchar, text, ntext, image, xml, varbinary, or varbinary(max).

column_listcolumn_list
コンマ区切りで複数の列を指定できます。Indicates that several columns, separated by a comma, can be specified. column_list は、かっこで囲む必要があります。column_list must be enclosed in parentheses. language_term を指定しない場合、column_list で指定するすべての列の言語は同じにする必要があります。Unless language_term is specified, the language of all columns of column_list must be the same.

*
フルテキスト検索用に登録されているすべての列を使用して、指定した freetext_string を検索します。Specifies that all columns that have been registered for full-text searching should be used to search for the given freetext_string. Language_termが指定されていない限り、テーブル内のすべてのフルテキストインデックス列の言語は同じである必要があります。Unless language_term is specified, the language of all full-text indexed columns in the table must be the same.

freetext_stringfreetext_string
column_name で検索するテキストです。Is text to search for in the column_name. 単語、フレーズ、文など、あらゆるテキストを入力できます。Any text, including words, phrases or sentences, can be entered. 用語または一定の形式になっている用語がフルテキスト インデックス内に見つかった場合、一致するものと判断されます。Matches are generated if any term or the forms of any term is found in the full-text index.

CONTAINS 検索条件とは異なり、とはキーワードで、 freetext_stringで使用されている場合、"and" はノイズワード (ストップワード) と見なされ、破棄されます。Unlike in the CONTAINS search condition where AND is a keyword, when used in freetext_string the word 'and' is considered a noise word, or stopword, and will be discarded.

WEIGHT、FORMSOF、ワイルドカード、NEAR、その他の構文は使用できません。Use of WEIGHT, FORMSOF, wildcards, NEAR and other syntax is not allowed. freetext_string は単語、語幹に分割され、類義語がチェックされて渡されます。freetext_string is wordbroken, stemmed, and passed through the thesaurus.

LANGUAGE language_termLANGUAGE language_term
クエリにおいて、単語区切り、語幹への分割、類義語のチェック、ストップワードの破棄を行うときに使用する言語リソースの言語を指定します。Is the language whose resources will be used for word breaking, stemming, and thesaurus and stopword removal as part of the query. このパラメーターは省略可能で、言語のロケール識別子 (LCID) に対応する文字列、整数、または 16 進数の値を指定できます。This parameter is optional and can be specified as a string, integer, or hexadecimal value corresponding to the locale identifier (LCID) of a language. language_term を指定した場合、その言語は検索条件のすべての要素に適用されます。If language_term is specified, the language it represents will be applied to all elements of the search condition. 値を指定しなかった場合は、列のフルテキストの言語が使用されます。If no value is specified, the column full-text language is used.

1 つの列に言語の異なる複数のドキュメントが BLOB (Binary Large Object) として格納されている場合、そのインデックスの作成に使用される言語は、そのドキュメントのロケール識別子 (LCID) によって決まります。If documents of different languages are stored together as binary large objects (BLOBs) in a single column, the locale identifier (LCID) of a given document determines what language is used to index its content. このような列に対してクエリを実行するときに、言語 language_termを指定すると、一致する確率が高くなる可能性があります。When querying such a column, specifying LANGUAGE language_term can increase the probability of a good match.

language_term を文字列で指定する場合は、sys.syslanguages (Transact-SQL) 互換性ビューの alias 列の値と同じ値を指定します。When specified as a string, language_term corresponds to the alias column value in the sys.syslanguages (Transact-SQL) compatibility view. 文字列の場合は、'language_term' のように引用符 (') で囲む必要があります。The string must be enclosed in single quotation marks, as in 'language_term'. language_term を整数で指定する場合は、その言語を表す実際の LCID を指定します。When specified as an integer, language_term is the actual LCID that identifies the language. language_term を 16 進数の値で指定する場合は、「0x」の後に LCID の 16 進数の値を指定します。When specified as a hexadecimal value, language_term is 0x followed by the hexadecimal value of the LCID. 16 進数の値は、先頭の 0 を含め、8 桁以内で指定してください。The hexadecimal value must not exceed eight digits, including leading zeros.

値が2バイト文字セット (DBCS) 形式の場合、 MicrosoftMicrosoft SQL ServerSQL Server はそれを Unicode に変換します。If the value is in double-byte character set (DBCS) format, MicrosoftMicrosoft SQL ServerSQL Server will convert it to Unicode.

指定した言語が無効であるか、その言語に該当するリソースがインストールされていない場合は、SQL ServerSQL Server によりエラーが返されます。If the language specified is not valid or there are no resources installed that correspond to that language, SQL ServerSQL Server returns an error. ニュートラル言語リソースを使用するには、language_term に「0x0」を指定してください。To use the neutral language resources, specify 0x0 as language_term.

top_n_by_ranktop_n_by_rank
一致したものの中から、降順で順位の高い方からn 個だけを返すことを指定します。Specifies that only the nhighest ranked matches, in descending order, are returned. 整数値nが指定されている場合にのみ適用されます。Applies only when an integer value, n, is specified. top_n_by_rank を他のパラメーターと組み合わせた場合、クエリから返される行数は、実際にすべての述語に一致する行数より少なくなります。If top_n_by_rank is combined with other parameters, the query could return fewer rows than the number of rows that actually match all the predicates. top_n_by_rankを使用すると、最も関連性の高いヒットだけを再度呼び出すことで、クエリのパフォーマンスを向上させることができます。top_n_by_rank allows you to increase query performance by recalling only the most relevant hits.

RemarksRemarks

フルテキストの述語と関数の対象は、FROM 述語で示される 1 つのテーブルです。Full-text predicates and functions work on a single table, which is implied in the FROM predicate. 複数のテーブルを検索するには、FROM 句で結合テーブルを使用して、複数のテーブルが組み合わされた結果セットを検索します。To search on multiple tables, use a joined table in your FROM clause to search on a result set that is the product of two or more tables.

FREETEXTTABLE では、FREETEXT 述語と同じ検索条件が使用されます。FREETEXTTABLE uses the same search conditions as the FREETEXT predicate.

CONTAINSTABLE と同様に、返されるテーブルにはKEYRANKという名前の列があります。この列はクエリ内で参照され、適切な行を取得し、行の順位付け値を使用します。Like CONTAINSTABLE, the table returned has columns named KEY and RANK, which are referenced within the query to obtain the appropriate rows and use the row ranking values.

アクセス許可Permissions

FREETEXTTABLE を呼び出すには、指定されるテーブルまたは参照されるテーブル列に対して適切な SELECT 権限が必要です。FREETEXTTABLE can be invoked only by users with appropriate SELECT privileges for the specified table or the referenced columns of the table.

Examples

A.A. 簡単な例Simple Example

次の例では、2つの列からなる単純なテーブルを作成し、そのフラグの3つの市区郡と色を一覧表示します。The following example creates and populates a simple table of two columns, listing 3 counties and the colors in their flags. このメソッドは、テーブルにフルテキストカタログとインデックスを作成して設定します。The it creates and populates a full-text catalog and index on the table. 次に、 FREETEXTTABLE構文を示します。Then the FREETEXTTABLE syntax is demonstrated.

CREATE TABLE Flags (Country nvarchar(30) NOT NULL, FlagColors varchar(200));  
CREATE UNIQUE CLUSTERED INDEX FlagKey ON Flags(Country);  
INSERT Flags VALUES ('France', 'Blue and White and Red');  
INSERT Flags VALUES ('Italy', 'Green and White and Red');  
INSERT Flags VALUES ('Tanzania', 'Green and Yellow and Black and Yellow and Blue');  
SELECT * FROM Flags;  
GO  
  
CREATE FULLTEXT CATALOG TestFTCat;  
CREATE FULLTEXT INDEX ON Flags(FlagColors) KEY INDEX FlagKey ON TestFTCat;  
GO   
  
SELECT * FROM Flags;  
SELECT * FROM FREETEXTTABLE (Flags, FlagColors, 'Blue');  
SELECT * FROM FREETEXTTABLE (Flags, FlagColors, 'Yellow');  

B:B. INNER JOIN での FREETEXT の使用Using FREETEXT in an INNER JOIN

次の例では、の意味に一致する説明を持つ製品の説明と順位を返し high level of performance ます。The following example returns the description and rank of any products with a description that matches the meaning of high level of performance.

USE AdventureWorks2012;  
GO  
  
SELECT FT_TBL.Description  
    ,KEY_TBL.RANK  
FROM Production.ProductDescription AS FT_TBL   
    INNER JOIN FREETEXTTABLE(Production.ProductDescription,  
    Description,   
    'high level of performance') AS KEY_TBL  
ON FT_TBL.ProductDescriptionID = KEY_TBL.[KEY]  
ORDER BY RANK DESC;  
GO  

C:C. 言語および最高順位の一致の指定Specifying Language and Highest Ranked Matches

次の例は同じであり、 LANGUAGE language_termtop_n_by_rankパラメーターの使用方法を示しています。The following example is identical and shows the use of the LANGUAGElanguage_term and top_n_by_rank parameters.

USE AdventureWorks2012;  
GO  
  
SELECT FT_TBL.Description  
    ,KEY_TBL.RANK  
FROM Production.ProductDescription AS FT_TBL   
    INNER JOIN FREETEXTTABLE(Production.ProductDescription,  
    Description,   
    'high level of performance',  
    LANGUAGE N'English', 2) AS KEY_TBL  
ON FT_TBL.ProductDescriptionID = KEY_TBL.[KEY]  
ORDER BY RANK DESC;  
GO  

注意

Top_n_by_rankパラメーターを使用するには、言語language_termパラメーターは必要ありません。The LANGUAGE language_term parameter is not required to use the top_n_by_rank parameter.

参照See Also

フルテキスト検索の概要 Get Started with Full-Text Search
フルテキスト カタログの作成と管理 Create and Manage Full-Text Catalogs
CREATE FULLTEXT CATALOG (Transact-SQL) CREATE FULLTEXT CATALOG (Transact-SQL)
CREATE FULLTEXT INDEX (Transact-SQL) CREATE FULLTEXT INDEX (Transact-SQL)
フルテキスト インデックスの作成と管理 Create and Manage Full-Text Indexes
フルテキスト検索でのクエリ Query with Full-Text Search
フルテキスト検索クエリの作成 (Visual Database Tools) Create Full-Text Search Queries (Visual Database Tools)
Transact-sql)を含む ( CONTAINS (Transact-SQL)
CONTAINSTABLE (Transact-SQL) CONTAINSTABLE (Transact-SQL)
FREETEXT (Transact-SQL) FREETEXT (Transact-SQL)
行セット関数 (Transact-sql) Rowset Functions (Transact-SQL)
SELECT (Transact-SQL) SELECT (Transact-SQL)
WHERE (Transact-SQL) WHERE (Transact-SQL)
precompute rank サーバー構成オプションprecompute rank Server Configuration Option