FREETEXTTABLE (Transact-SQL)

Data aggiornamento: 17 luglio 2006

Restituisce una tabella con una o più righe oppure nessuna riga per le colonne contenenti dati di tipo carattere per i valori che corrispondono al significato, ma non all'esatta formulazione, del testo specificato in freetext_string. È possibile fare riferimento a FREETEXTTABLE nella clausola FROM di un'istruzione SELECT come a un normale nome di tabella.

Le query che utilizzano FREETEXTTABLE specificano query full-text di tipo freetext che restituiscono una classificazione della pertinenza (RANK) e una chiave full-text (KEY) per ogni riga.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

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

Argomenti

  • table
    Nome della tabella contrassegnata per query full-text. table o viewpuò essere un nome di oggetto di database a una, due o tre parti. L'esecuzione della ricerca in una vista può interessare solo una tabella di base con indicizzazione full-text.

    Per ulteriori informazioni, vedere Convenzioni della sintassi Transact-SQL (Transact-SQL).

    table non può includere un nome di server e non può essere utilizzato per l'esecuzione di query su server collegati.

  • column_name
    Nome della colonna da includere nella ricerca appartenente a table. Le colonne valide per la ricerca full-text sono le colonne di tipo char, varchar, nchar, nvarchar, text, ntext, image, xml e varbinary(max).
  • column_list
    Indica che è possibile specificare più colonne, separate da virgola. column_list deve essere racchiuso tra parentesi. Se non si specifica language_term, la lingua di tutte le colonne in column_list deve essere la stessa.
  • *
    Specifica che la ricerca della stringa specificata in freetext_string deve essere eseguita in tutte le colonne registrate per la ricerca full-text. Se non si specifica language_term, la lingua di tutte le colonne con indicizzazione full-text della tabella deve essere la stessa.
  • freetext_string
    Testo da cercare nella colonna specificata in column_name. È possibile specificare qualsiasi testo, comprese parole e frasi. Vengono generate corrispondenze se nell'indice full-text viene trovato un termine o vengono trovate le forme di un termine.

    A differenza di quanto avviene nella condizione di ricerca CONTAINS dove AND è una parola chiave, se utilizzata in freetext_string la parola "and" viene considerata una parola non significativa e viene ignorata.

    Non è consentito utilizzare WEIGHT, FORMSOF, caratteri jolly, NEAR e altra sintassi. La stringa specificata in freetext_string viene sottoposta alla sillabazione, all'analisi morfologica e al thesaurus. Se freetext_string è racchiusa tra virgolette doppie, viene cercata una frase corrispondente. Il testo non viene sottoposto alla sillabazione e al thesaurus.

  • LANGUAGE language_term
    Lingua di cui verranno utilizzate le risorse per l'esecuzione del wordbreaking, dello stemming e del thesaurus e per la rimozione delle parole non significative nell'ambito della query FREETEXTTABLE. Questo parametro è facoltativo ed è possibile specificare un valore stringa, un valore integer o un valore esadecimale corrispondente all'identificatore delle impostazioni internazionali (LCID) di una lingua. Se si specifica language_term, la lingua rappresentata dall'argomento verrà applicata a tutti gli elementi della condizione di ricerca. Se non si specifica alcun valore, verrà utilizzata la lingua per la ricerca full-text della colonna.

    Se l'argomento language_term viene specificato come stringa, corrisponde al valore della colonna alias nella tabella di sistema syslanguages. La stringa deve essere racchiusa tra virgolette singole, come in 'language_term'. Se l'argomento language_term viene specificato come valore integer, corrisponde all'effettivo LCID che identifica la lingua. Se si specifica un valore esadecimale, language_term è 0x seguito dal valore esadecimale di LCID. Il valore esadecimale non deve superare le otto cifre, inclusi gli zero iniziali.

    Se il valore è in formato DBCS (Double-Byte Character Set), verrà convertito in Unicode da Microsoft SQL Server.

    Se la lingua specificata non è valida o non vi sono risorse installate corrispondenti a tale lingua, SQL Server restituisce un errore. Per utilizzare le risorse della lingua neutra, specificare 0x0 per language_term.

  • top_n_by_rank
    Quando si specifica un valore integer, n, FREETEXTTABLE restituisce solo le prime n corrispondenze, ordinate in base alla pertinenza.

    Se oltre al predicato FREETEXTTABLE viene applicato un filtro, tale filtro viene applicato alle prime n righe e viene restituito un numero di righe inferiore a quello specificato in top_n_by_rank. L'attivazione dell'opzione precompute rank nella stored procedure sp_configure può produrre un miglioramento delle prestazioni delle query FREETEXTTABLE che utilizzano il parametro top_n_by_rank. Per ulteriori informazioni, vedere sp_configure (Transact-SQL) e sp_fulltext_service (Transact-SQL).

Osservazioni

La funzione FREETEXTTABLE utilizza le stesse condizioni di ricerca del predicato FREETEXT.

Come per CONTAINSTABLE, la tabella restituita include le colonne KEY e RANK, a cui viene fatto riferimento nella query per ottenere le righe appropriate e utilizzare i valori di pertinenza della riga.

FREETEXTTABLE non viene riconosciuta come parola chiave se il livello di compatibilità è inferiore a 70. Per ulteriori informazioni, vedere sp_dbcmptlevel (Transact-SQL).

Autorizzazioni

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.

Esempi

Nell'esempio seguente vengono restituiti il nome e la descrizione di tutte le categorie correlate al termine sweet, candy, bread, dry o meat.

[!NOTA] Per eseguire questo esempio, è necessario installare il database Northwind. Per informazioni sulle procedure di installazione del database Northwind, vedere Download dei database di esempio Northwind e 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

Nell'esempio seguente, identico al precedente, viene illustrato l'utilizzo dei parametri LANGUAGElanguage_term e 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

[!NOTA] Non è necessario che per il parametro LANGUAGE language_term venga utilizzato il parametro top_n_by_rank .

Cronologia modifiche

Versione Cronologia

17 luglio 2006

Nuovo contenuto:
  • Aggiunta dell'esempio relativo all'argomento LANGUAGE.

Vedere anche

Riferimento

CONTAINS (Transact-SQL)
CONTAINSTABLE (Transact-SQL)
FREETEXT (Transact-SQL)
Funzioni per i set di righe (Transact-SQL)
SELECT (Transact-SQL)
WHERE (Transact-SQL)

Altre risorse

Esecuzione di query su SQL Server tramite la ricerca full-text
Opzione precompute rank

Guida in linea e informazioni

Assistenza su SQL Server 2005