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

SI APPLICA A: sìSQL Server sìDatabase SQL di Azure noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

È una funzione utilizzata nella clausola FROM di un Transact-SQLTransact-SQL istruzione SELECT per eseguire un SQL ServerSQL Server colonne contenenti tipi di dati basati su caratteri con indicizzazione full-text: ricerca full-text.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. Questa funzione restituisce una tabella di zero, uno o più righe per le colonne contenenti valori che corrispondono al significato e non solo all'esatta formulazione, del testo nell'oggetto specificato freetext_string.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. Viene fatto riferimento a FREETEXTTABLE come se fosse un normale nome di tabella.FREETEXTTABLE is referenced as if it were a regular table name.

La funzione FREETEXTTABLE è utile per gli stessi tipi di corrispondenze come le FREETEXT (Transact-SQL),FREETEXTTABLE is useful for the same kinds of matches as the FREETEXT (Transact-SQL),

Le query che utilizzano FREETEXTTABLE restituiscono un valore di classificazione per pertinenza (RANK) e una chiave full-text (KEY) per ogni riga.Queries using FREETEXTTABLE return a relevance ranking value (RANK) and full-text key (KEY) for each row.

Nota

Per informazioni sulle forme di ricerca full-text supportate da SQL ServerSQL Server, vedere Eseguire query con ricerca full-text.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)).|

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintassiSyntax

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

ArgomentiArguments

tabletable
Nome della tabella contrassegnata per query full-text.Is the name of the table that has been marked for full-text querying. Nella tabella oppure visualizzazionepuò essere un una, due o nome di oggetto di database di tre parti.table or viewcan be a one-, two-, or three-part database object name. L'esecuzione della ricerca in una vista può interessare solo una tabella di base con indicizzazione full-text.When querying a view, only one full-text indexed base table can be involved.

tabella non è possibile specificare un nome di server e non può essere usato nelle query su server collegati.table cannot specify a server name and cannot be used in queries against linked servers.

column_namecolumn_name
Nome di una o più colonne indicizzate full-text della tabella specificata nella clausola FROM.Is the name of one or more full-text indexed columns of the table specified in the FROM clause. La colonna o le colonne possono essere di tipo char, varchar, nchar, nvarchar, text, ntext, image, xml, varbinary r varbinary(max) .The columns can be of type char, varchar, nchar, nvarchar, text, ntext, image, xml, varbinary, or varbinary(max).

column_listcolumn_list
Viene indicato che è possibile specificare più colonne, separate da virgola.Indicates that several columns, separated by a comma, can be specified. column_listdeve essere racchiuso tra parentesi.column_list must be enclosed in parentheses. La lingua di tutte le colonne di column_list deve essere la stessa, a meno che non sia specificato language_term.Unless language_term is specified, the language of all columns of column_list must be the same.

*
Specifica che la ricerca della stringa specificata in freetext_string deve essere eseguita in tutte le colonne registrate per la ricerca full-text.Specifies that all columns that have been registered for full-text searching should be used to search for the given freetext_string. A meno che language_term viene specificato, la lingua di tutte le colonne indicizzate full-text nella tabella deve essere lo stesso.Unless language_term is specified, the language of all full-text indexed columns in the table must be the same.

freetext_stringfreetext_string
Testo da cercare nella colonna specificata in column_name.Is text to search for in the column_name. È possibile specificare qualsiasi testo, comprese parole e frasi.Any text, including words, phrases or sentences, can be entered. Vengono generate corrispondenze se nell'indice full-text viene trovato un termine o vengono trovate le forme di un termine.Matches are generated if any term or the forms of any term is found in the full-text index.

A differenza di CONTAINS ricerca condizione where ed è una parola chiave, se utilizzata in freetext_string la parola 'and' viene considerata una parola non significativa, o parola non significativae verrà ignorata.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.

Non è consentito utilizzare WEIGHT, FORMSOF, caratteri jolly, NEAR e altra sintassi.Use of WEIGHT, FORMSOF, wildcards, NEAR and other syntax is not allowed. freetext_string viene sottoposta alla sillabazione, all'analisi morfologica e al thesaurus.freetext_string is wordbroken, stemmed, and passed through the thesaurus.

LANGUAGE language_termLANGUAGE language_term
Lingua le cui risorse verranno utilizzate per il word breaking, lo stemming, il thesaurus e la rimozione di parole non significative come parte della query.Is the language whose resources will be used for word breaking, stemming, and thesaurus and stopword removal as part of the query. Questo parametro è facoltativo e può essere specificato come valore stringa, intero o esadecimale corrispondente all'identificatore delle impostazioni locali (LCID) di una lingua.This parameter is optional and can be specified as a string, integer, or hexadecimal value corresponding to the locale identifier (LCID) of a language. Se si specifica language_term, la lingua rappresentata dall'argomento verrà applicata a tutti gli elementi della condizione di ricerca.If language_term is specified, the language it represents will be applied to all elements of the search condition. Se non si specifica alcun valore, verrà utilizzata la lingua full-text della colonna.If no value is specified, the column full-text language is used.

Se documenti di lingue diverse vengono archiviati insieme come oggetti BLOB in una singola colonna, l'identificatore delle impostazioni locali (LCID) di un documento specifico determina la lingua da utilizzare per indicizzarne il contenuto.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. Se quando si esegue una query su una colonna di questo tipo si specifica LANGUAGE language_term è possibile aumentare la probabilità di una corrispondenza soddisfacente.When querying such a column, specifying LANGUAGE language_term can increase the probability of a good match.

Se l'argomento language_term viene specificato come stringa, corrisponde al valore della colonnaalias nella vista di compatibilità sys.syslanguages (Transact-SQL).When specified as a string, language_term corresponds to the alias column value in the sys.syslanguages (Transact-SQL) compatibility view. La stringa deve essere racchiusa tra virgolette singole chiuse, come in 'language_term'.The string must be enclosed in single quotation marks, as in 'language_term'. Se l'argomento language_term viene specificato come valore intero, corrisponde all'LCID effettivo che identifica la lingua.When specified as an integer, language_term is the actual LCID that identifies the language. Se si specifica un valore esadecimale, language_term è 0x seguito dal valore esadecimale di LCID.When specified as a hexadecimal value, language_term is 0x followed by the hexadecimal value of the LCID. Il valore esadecimale non deve superare le otto cifre, inclusi gli zeri iniziali.The hexadecimal value must not exceed eight digits, including leading zeros.

Se il valore è in formato DBCS (Double-Byte Character Set), MicrosoftMicrosoft SQL ServerSQL Server lo convertirà in Unicode.If the value is in double-byte character set (DBCS) format, MicrosoftMicrosoft SQL ServerSQL Server will convert it to Unicode.

Se la lingua specificata non è valida o non vi sono risorse installate corrispondenti a tale lingua, SQL ServerSQL Server restituisce un errore.If the language specified is not valid or there are no resources installed that correspond to that language, SQL ServerSQL Server returns an error. Per usare le risorse della lingua neutra, specificare 0x0 per language_term.To use the neutral language resources, specify 0x0 as language_term.

top_n_by_ranktop_n_by_rank
Specifica che solo le ncorrispondenze di pertinenza maggiore in ordine decrescente, vengono restituite.Specifies that only the nhighest ranked matches, in descending order, are returned. Si applica solo quando un valore intero, n, viene specificato.Applies only when an integer value, n, is specified. Se il parametro top_n_by_rank viene combinato con altri parametri, la query potrebbe restituire un numero inferiore di righe rispetto al numero di righe effettivamente corrispondenti a tutti i predicati.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 consente di migliorare le prestazioni delle query richiamando solo le occorrenze più attinenti.top_n_by_rank allows you to increase query performance by recalling only the most relevant hits.

NoteRemarks

I predicati e le funzioni full-text possono essere utilizzati in una singola tabella, specificata in modo implicito nel predicato FROM.Full-text predicates and functions work on a single table, which is implied in the FROM predicate. Per cercare in più tabelle, utilizzare una tabella unita in join nella clausola FROM, che consente di eseguire una ricerca in un set di risultati prodotto da due o più tabelle.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.

La funzione FREETEXTTABLE utilizza le stesse condizioni di ricerca del predicato FREETEXT.FREETEXTTABLE uses the same search conditions as the FREETEXT predicate.

Come per CONTAINSTABLE, la tabella restituita include le colonne denominate KEY e RANK, cui viene fatto riferimento nella query per ottenere le righe appropriate e utilizzare i valori di pertinenza della riga.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.

PermissionsPermissions

La funzione FREETEXTTABLE può essere richiamata soltanto dagli utenti che dispongono delle autorizzazioni SELECT appropriate per la tabella specificata o per le colonne della tabella a cui viene fatto riferimento.FREETEXTTABLE can be invoked only by users with appropriate SELECT privileges for the specified table or the referenced columns of the table.

EsempiExamples

R.A. Esempio sempliceSimple Example

Nell'esempio seguente crea e popola una tabella semplice delle due colonne, elenco di 3 provincie e i colori nei flag.The following example creates and populates a simple table of two columns, listing 3 counties and the colors in their flags. L'it crea e popola un catalogo full-text e un indice nella tabella.The it creates and populates a full-text catalog and index on the table. L'oggetto FREETEXTTABLE viene illustrata la sintassi.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. Utilizzo di FREETEXT in INNER JOINUsing FREETEXT in an INNER JOIN

L'esempio seguente restituisce la descrizione e il numero di dimensioni di tutti i prodotti con una descrizione che corrisponda il significato di 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. Specifica della lingua e delle corrispondenze di pertinenza maggioreSpecifying Language and Highest Ranked Matches

Nell'esempio seguente è identico e viene illustrato come utilizzare il LANGUAGE language_term e top_n_by_rank parametri.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  

Nota

Il linguaggio language_term parametro non è necessario utilizzare il top_n_by_rank parametro.The LANGUAGE language_term parameter is not required to use the top_n_by_rank parameter.

Vedere ancheSee Also

Introduzione alla ricerca full-text Get Started with Full-Text Search
Creare e gestire cataloghi full-text 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)
Creazione e gestione di indici full-text Create and Manage Full-Text Indexes
Eseguire query con ricerca full-text Query with Full-Text Search
Creare query di ricerca full-text (Visual Database Tools) Create Full-Text Search Queries (Visual Database Tools)
CONTAINS (Transact-SQL) CONTAINS (Transact-SQL)
CONTAINSTABLE (Transact-SQL) CONTAINSTABLE (Transact-SQL)
FREETEXT (Transact-SQL) FREETEXT (Transact-SQL)
Funzioni per i set di righe (Transact-SQL) Rowset Functions (Transact-SQL)
SELECT (Transact-SQL) SELECT (Transact-SQL)
WHERE (Transact-SQL) WHERE (Transact-SQL)
Opzione di configurazione del server precompute rankprecompute rank Server Configuration Option