CREATE FULLTEXT INDEX (Transact-SQL)

Data aggiornamento: 12 dicembre 2006

Crea un indice full-text per una o più colonne di una tabella o una vista indicizzata di un database. È consentito un solo indice full-text per tabella o vista indicizzata. Per impostazione predefinita, al momento della creazione di un database viene attivata la funzione di ricerca full-text.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

CREATE FULLTEXT INDEX ON table_name
     [(column_name [TYPE COLUMN type_column_name] 
          [LANGUAGE language_term] [,...n])]
     KEY INDEX index_name
          [ON fulltext_catalog_name]
     [WITH 
          {CHANGE_TRACKING {MANUAL | AUTO | OFF [, NO POPULATION]}}
     ]

Argomenti

  • table_name
    Nome della tabella o della vista indicizzata contenente la colonna o le colonne incluse nell'indice full-text.
  • column_name
    Nome della colonna o delle colonne incluse nell'indice full-text. Possono essere indicizzate per la ricerca full-text solo le colonne di tipo char, varchar, nchar, nvarchar, text, ntext, image, xml e varbinary.
  • TYPE COLUMN type_column_name
    Nome della colonna in table_name contenente il tipo di documento di column_name.

    type_column_name deve essere di tipo char, nchar, varchar o nvarchar. Specificare type_column_name solo se le colonne specificate in column_name sono di tipo varbinary(max) o image. In caso contrario, SQL Server restituisce un errore.

    Per ulteriori informazioni, vedere Filtri di ricerca full-text.

  • LANGUAGE language_term
    Lingua dei dati archiviati in column_name.

    language_term è 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 da esso rappresentata verrà utilizzata per indicizzare i dati archiviati nelle colonne di tipo char, nchar, varchar, nvarchar, text e ntext. Questa lingua sarà la lingua predefinita utilizzata in fase di query se non viene specificato language_term in un predicato full-text per la colonna. Se non si specifica alcun valore, verrà utilizzata la lingua predefinita dell'istanza di SQL Server.

    Se la lingua è sconosciuta o se vi sono più lingue da archiviare in column_name (e la colonna non è di tipo BLOB o XML), utilizzare la lingua neutra (0x0). Per ulteriori informazioni, vedere Considerazioni internazionali per la ricerca full-text.

    Utilizzare la stored procedure sp_configure per accedere alle informazioni sulla lingua full-text predefinita dell'istanza di Microsoft SQL Server. Per ulteriori informazioni, vedere sp_configure (Transact-SQL) e Opzione default full-text language.

    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'LCID effettivo 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 SQL Server.

    È necessario abilitare per la lingua specificata in language_term le risorse quali il word breaker e lo stemmer. Se tali risorse non supportano la lingua specificata, SQL Server restituisce un errore.

    Per le colonne di tipo diverso da BLOB e XML contenenti testo in più lingue, o nei casi in cui la lingua del testo archiviato nella colonna sia sconosciuta, utilizzare la risorsa della lingua neutra (0x0). Per i documenti archiviati in colonne di tipo XML o BLOB, in fase di indicizzazione verrà utilizzata la codifica della lingua del documento. Nelle colonne XML, ad esempio, la lingua è identificata dall'attributo xml:lang dei documenti XML. In fase di query, il valore precedentemente specificato in language_term diventa la lingua predefinita per le query full-text, a meno che non si specifichi language_term all'interno di una query full-text.

  • ,... n
    Indica che l'indicizzazione full-text può essere specificata per più colonne. Se si specificano più colonne, separarle con una virgola.
  • KEY INDEX index_name
    Nome dell'indice di chiave univoco in table_name. KEY INDEX deve essere una colonna chiave singola univoca che non supporta valori null. Selezionare l'indice di chiave univoco più piccolo possibile per la chiave univoca full-text. Per prestazioni ottimali, utilizzare un indice cluster.
  • ON fulltext_catalog_name
    Catalogo full-text utilizzato per l'indice full-text. Il catalogo deve esistere nel database corrente. Questa clausola è facoltativa. Se non viene specificata, viene utilizzato un catalogo predefinito. Se non esiste alcun catalogo predefinito, SQL Server restituisce un errore.

    Il filegroup di fulltext_catalog_name o, se non è specificato alcun catalogo, il catalogo full-text predefinito non deve essere READONLY o OFFLINE. In tutti gli altri casi SQL Server restituisce un errore.

  • WITH CHANGE_TRACKING {MANUAL | AUTO | OFF [ , NO POPULATION]}
    Specifica se SQL Server deve mantenere un elenco di tutte le modifiche apportate ai dati indicizzati. Le modifiche apportate ai dati tramite WRITETEXT e UPDATETEXT non vengono prelevate con il rilevamento delle modifiche.

    • MANUAL
      Specifica che il log di rilevamento delle modifiche verrà propagato in base a una pianificazione mediante SQL Server Agent o a mano dall'utente.
    • AUTO
      Specifica che SQL Server aggiorna automaticamente l'indice full-text man mano che i dati vengono modificati nelle tabelle associate. AUTO è l'impostazione predefinita.

      Nota   È possibile propagare automaticamente le modifiche, ma è possibile che non risultino immediatamente nell'indice full-text. Per ulteriori informazioni sulle proprietà utilizzate per il monitoraggio del processo di indicizzazione full-text e per la diagnosi di eventuali problemi dell'indicizzazione full-text, vedere Recupero dei valori di proprietà full-text tramite l'utilizzo di funzioni Transact-SQL.

    • OFF [ **,**NO POPULATION]
      Specifica che SQL Server non mantiene un elenco delle modifiche apportate ai dati indicizzati.

      L'opzione NO POPULATION può essere utilizzata solo se CHANGE_TRACKING è impostato su OFF. Se si specifica NO POPULATION, SQL Server non popola un indice dopo che è stato creato. L'indice viene popolato solo dopo l'esecuzione del comando ALTER FULLTEXT INDEX con la clausola START FULL o INCREMENTAL POPULATION. Se non si specifica NO POPULATION, SQL Server popola l'indice completamente dopo che è stato creato.

Autorizzazioni

L'utente deve disporre dell'autorizzazione REFERENCES nel catalogo full-text e dell'autorizzazione ALTER nella tabella della vista oppure deve essere membro del ruolo predefinito del server sysadmin o del ruolo predefinito del database db_owner o db_ddladmin.

Esempi

Nell'esempio seguente viene creato un indice full-text nella tabella HumanResources.JobCandidate.

USE AdventureWorks;
GO
CREATE UNIQUE INDEX ui_ukJobCand ON HumanResources.JobCandidate(JobCandidateID);
CREATE FULLTEXT CATALOG ft AS DEFAULT;
CREATE FULLTEXT INDEX ON HumanResources.JobCandidate(Resume) KEY INDEX ui_ukJobCand;
GO

Vedere anche

Riferimento

ALTER FULLTEXT INDEX (Transact-SQL)
DROP FULLTEXT INDEX (Transact-SQL)
GRANT (Transact-SQL)

Altre risorse

Ricerca full-text

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

12 dicembre 2006

Nuovo contenuto:
  • Aggiunta di un chiarimento per specificare che gli indici full-text possono essere applicati anche alle viste indicizzate.
  • Aggiunta di un collegamento all'argomento Filtri per chiarire la clausola TYPE COLUMN.