ALTER FULLTEXT INDEX (Transact-SQL)

Modifica le proprietà di un indice full-text.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

ALTER FULLTEXT INDEX ON table_name
   { ENABLE 
   | DISABLE
   | SET CHANGE_TRACKING { MANUAL | AUTO | OFF }
   | ADD ( column_name 
     [ TYPE COLUMN type_column_name ] 
     [ LANGUAGE language_term ] [,...n] )
     [ WITH NO POPULATION ]
   | DROP ( column_name [,...n] )
     [WITH NO POPULATION ] 
   | START { FULL | INCREMENTAL | UPDATE } POPULATION
   | {STOP | PAUSE | RESUME } POPULATION 
   | SET STOPLIST { OFF| SYSTEM | stoplist_name }
     [WITH NO POPULATION] 
   }
[;]

Argomenti

  • table_name
    Nome della tabella o della vista indicizzata contenente la colonna o le colonne incluse nell'indice full-text. I nomi dei proprietari della tabella e del database sono facoltativi.

  • ENABLE | DISABLE
    Indica a SQL Server se raccogliere i dati dell'indice full-text per table_name. ENABLE consente di attivare l'indice full-text, DISABLE di disattivarlo.

    Quando l'indice full-text è disabilitato, i relativi metadati vengono mantenuti nelle tabelle di sistema. Se l'opzione CHANGE_TRACKING è abilitata (aggiornamento manuale o automatico) quando l'indice full-text è disabilitato, lo stato dell'indice viene bloccato, eventuali ricerche per indicizzazione in corso vengono interrotte e le nuove modifiche apportate ai dati della tabella non vengono registrate o propagate nell'indice. È possibile riattivare l'indice full-text in table_name tramite ENABLE.

  • SET CHANGE_TRACKING {MANUAL | AUTO | OFF}
    Specifica se le modifiche (aggiornamenti, eliminazioni o inserimenti) apportate alle colonne della tabella coperte dall'indice full-text verranno propagate da SQL Server all'indice full-text. Le modifiche apportate ai dati tramite WRITETEXT e UPDATETEXT non vengono riflesse nell'indice full-text, pertanto non vengono registrate dalla funzione di rilevamento delle modifiche.

    [!NOTA]

    Per informazioni sull'interazione del rilevamento delle modifiche con WITH NO POPULATION, vedere la sezione "Osservazioni" più avanti in questo argomento.

  • MANUAL
    Specifica che le modifiche rilevate verranno propagate manualmente chiamando l'istruzione Transact-SQL ALTER FULLTEXT INDEX … START UPDATE POPULATION (popolamento manuale). Per chiamare questa istruzione Transact-SQL periodicamente, è possibile utilizzare SQL Server Agent.

  • AUTO
    Specifica che le modifiche rilevate verranno propagate automaticamente quando vengono modificati i dati nella tabella di base (popolamento automatico). Sebbene le modifiche vengano propagate automaticamente, tali modifiche potrebbero non risultare immediatamente nell'indice full-text. AUTO è l'impostazione predefinita.

  • OFF
    Specifica che in SQL Server non verrà mantenuto un elenco delle modifiche apportate ai dati indicizzati.

  • ADD | DROP column_name
    Specifica le colonne da aggiungere o eliminare in un indice full-text. Le colonne specificate devono essere di tipo char, varchar, nchar, nvarchar, text, ntext, image, xml, varbinary o varbinary(max).

    Utilizzare la clausola DROP solo per colonne abilitate in precedenza per l'indicizzazione full-text.

    Utilizzare TYPE COLUMN e LANGUAGE con la clausola ADD per impostare queste proprietà su column_name. Se si aggiunge una colonna, è necessario ripopolare l'indice full-text della tabella per consentire il corretto funzionamento delle query full-text su tale colonna.

    [!NOTA]

    Il popolamento dell'indice full-text dopo l'aggiunta o l'eliminazione di una colonna dipende dal fatto che il rilevamento delle modifiche sia o meno abilitato e che si specifichi o meno WITH NO POPULATION. Per ulteriori informazioni, vedere la sezione "Osservazioni" più avanti in questo argomento.

  • TYPE COLUMN type_column_name
    Specifica il nome di una colonna della tabella, type_column_name, in cui è contenuto il tipo di documento per un documento varbinary, varbinary(max) o image. Questa colonna, nota come colonna di tipo, contiene un'estensione di file fornita dall'utente (doc, pdf, xls e così via). Questa colonna deve essere di tipo char, nchar, varchar o nvarchar.

    Specificare TYPE COLUMN type_column_name solo se column_name specifica una colonna varbinary, varbinary(max) o image in cui i dati vengono archiviati come dati binari; in caso contrario, SQL Server restituisce un errore.

    [!NOTA]

    Durante l'indicizzazione, il motore di ricerca full-text utilizza l'abbreviazione nella colonna di tipo di ogni riga della tabella per identificare il filtro di ricerca full-text da utilizzare per il documento in column_name. Il filtro carica il documento come flusso binario, rimuove le informazioni sulla formattazione e invia il testo dal documento al componente word breaker. 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, intero o esadecimale corrispondente all'identificatore delle impostazioni locali (LCID) di una lingua. Se si specifica language_term, la lingua rappresentata dall'argomento viene applicata a tutti gli elementi della condizione di ricerca. Se non viene specificato alcun valore, viene utilizzata la lingua predefinita full-text dell'istanza di SQL Server.

    Utilizzare la stored procedure sp_configure per ottenere informazioni sulla lingua predefinita full-text dell'istanza di SQL Server. Per ulteriori informazioni, vedere Opzione default full-text language.

    Se viene specificato come stringa, l'argomento language_term corrisponde al valore della colonna alias nella tabella di sistema syslanguages. La stringa deve essere racchiusa tra virgolette singole, come in 'language_term'. Se viene specificato come valore intero, language_term corrisponde all'identificatore LCID effettivo della lingua. Se viene specificato come valore esadecimale, language_term corrisponde a 0x seguito dal valore esadecimale dell'identificatore LCID. Il valore esadecimale deve essere composto al massimo da otto cifre, inclusi gli zeri iniziali.

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

    Per la lingua specificata in language_term, è necessario abilitare le risorse, ad esempio word breaker e stemmer. Se tali risorse non supportano la lingua specificata, SQL Server restituisce un errore.

    Utilizzare la risorsa per la lingua neutra (0x0) per le colonne non BLOB e non XML che contengono dati di testo in più lingue oppure nei casi in cui la lingua del testo archiviato nella colonna è sconosciuta. Per i documenti archiviati in colonne di tipo XML o BLOB, in fase di indicizzazione viene utilizzata la codifica della lingua del documento. Nelle colonne XML, ad esempio, la lingua è identificata dall'attributo xml:lang nei 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 è possibile specificare più colonne per la clausola ADD o DROP. Se si specificano più colonne, utilizzare la virgola come separatore.

  • WITH NO POPULATION
    Specifica che l'indice full-text non verrà popolato dopo un'operazione ADD o DROP sulle colonne o un'operazione SET STOPLIST. L'indice verrà popolato solo se si esegue un comando START...POPULATION.

    Se si specifica NO POPULATION, SQL Server non popola un indice. L'indice viene popolato solo quando si esegue un comando ALTER FULLTEXT INDEX...START POPULATION. Se non si specifica NO POPULATION, SQL Server popola l'indice.

    Se l'opzione CHANGE_TRACKING è abilitata e si specifica WITH NO POPULATION, SQL Server restituisce un errore. Se l'opzione CHANGE_TRACKING è abilitata e non si specifica WITH NO POPULATION, SQL Server esegue un popolamento completo dell'indice.

    [!NOTA]

    Per ulteriori informazioni sull'interazione del rilevamento delle modifiche con WITH NO POPULATION, vedere la sezione "Osservazioni" più avanti in questo argomento.

  • START {FULL|INCREMENTAL|UPDATE} POPULATION
    Indica a SQL Server di avviare il popolamento dell'indice full-text di table_name. Se il popolamento dell'indice full-text è già in corso, SQL Server restituisce un avviso senza avviare un nuovo popolamento.

    • FULL
      Specifica che per l'indicizzazione full-text devono essere recuperate tutte le righe della tabella, anche se le righe sono già state indicizzate.

    • INCREMENTAL
      Specifica che per l'indicizzazione full-text devono essere recuperate solo le righe modificate dopo l'ultimo popolamento. È possibile applicare INCREMENTAL solo se la tabella include una colonna di tipo timestamp. Se una tabella nel catalogo full-text non include una colonna di tipo timestamp, per la tabella viene eseguito un popolamento FULL.

    • UPDATE
      Specifica che devono essere elaborate tutte le operazioni di inserimento, aggiornamento o eliminazione eseguite dopo l'ultimo aggiornamento dell'indice con rilevamento delle modifiche. Il popolamento con rilevamento delle modifiche deve essere abilitato per una tabella, ma l'indice ad aggiornamento in background o il rilevamento automatico delle modifiche non deve essere attivato.

  • {STOP | PAUSE | RESUME } POPULATION
    Interrompe o sospende qualsiasi popolamento in corso oppure interrompe o riprende qualsiasi popolamento sospeso.

    STOP POPULATION non interrompe il rilevamento automatico delle modifiche o l'indice ad aggiornamento in background. Per interrompere il rilevamento delle modifiche, utilizzare SET CHANGE_TRACKING OFF.

    È possibile utilizzare PAUSE POPULATION e RESUME POPULATION solo per popolamenti completi. Questi argomenti non sono rilevanti per altri tipi di popolamento poiché con gli altri popolamenti le ricerche per indicizzazione vengono riprese dal punto in cui sono state interrotte.

  • SET STOPLIST { OFF| SYSTEM | stoplist_name }
    Cambia l'elenco di parole non significative full-text da associare all'indice.

    • OFF
      Specifica che all'indice full-text non deve essere associato alcun elenco di parole non significative.

    • SYSTEM
      Specifica che per l'indice full-text deve essere utilizzato l'elemento STOPLIST full-text di sistema predefinito.

    • stoplist_name
      Specifica il nome dell'elenco di parole non significative da associare all'indice full-text.

    [!NOTA]

    Per informazioni sull'interazione del rilevamento delle modifiche con WITH NO POPULATION, vedere la sezione "Osservazioni" più avanti in questo argomento.

Osservazioni

Nelle colonne xml è possibile creare un indice full-text per indicizzare il contenuto degli elementi XML ignorando il markup XML. Ai valori degli attributi viene applicata l'indicizzazione full-text, a meno che non si tratti di valori numerici. I tag degli elementi vengono utilizzati come limiti dei token. Sono supportati documenti e frammenti XML o HTML ben formati contenenti più lingue. Per ulteriori informazioni, vedere Indice full-text su una colonna XML.

Interazioni del rilevamento delle modifiche con NO POPULATION

Il popolamento dell'indice full-text dipende dal fatto che il rilevamento delle modifiche sia o meno abilitato e che si specifichi o meno WITH NO POPULATION nell'istruzione ALTER FULLTEXT INDEX. Nella tabella seguente è riepilogato il risultato di tale interazione.

Rilevamento delle modifiche

WITH NO POPULATION

Risultato

Non abilitato

Non specificato

Viene eseguito un popolamento completo dell'indice.

Non abilitato

Specificato

L'indice non viene popolato fino a quando non viene eseguita un'istruzione ALTER FULLTEXT INDEX...START POPULATION.

Abilitato

Specificato

Viene generato un errore e l'indice non viene modificato.

Abilitato

Non specificato

Viene eseguito un popolamento completo dell'indice.

Autorizzazioni

L'utente deve disporre dell'autorizzazione ALTER per la tabella o la vista indicizzata oppure essere un membro del ruolo predefinito del server sysadmin o del ruolo predefinito del database db_ddladmin o db_owner.

Se si specifica SET STOPLIST, l'utente deve disporre dell'autorizzazione REFERENCES nell'elenco di parole non significative. Questa autorizzazione può essere concessa dal proprietario di STOPLIST. Per concedere l'autorizzazione REFERENCES sono inoltre necessarie le autorizzazioni ALTER FULLTEXT CATALOG.

[!NOTA]

Agli utenti viene concessa l'autorizzazione REFERENCE per l'elenco di parole non significative predefinito fornito con SQL Server.

Esempi

Nell'esempio seguente viene modificato l'indice full-text nella tabella JobCandidate del database AdventureWorks.

USE AdventureWorks;
GO
ALTER FULLTEXT INDEX ON HumanResources.JobCandidate ENABLE;
GO

Cronologia modifiche

Aggiornamento del contenuto

È stata aggiornata la sezione "Interazioni del rilevamento delle modifiche con NO POPULATION" con la correzione dei valori della colonna WITH NO POPULATION nel caso in cui il rilevamento delle modifiche sia abilitato.