ALTER FULLTEXT INDEX (Transact-SQL)
Cambia las propiedades de un índice de texto completo.
Sintaxis
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]
}
[;]
Argumentos
table_name
Es el nombre de la tabla o vista indizada que contiene la columna o columnas incluidas en el índice de texto completo. Especificar los nombres de la base de datos y del propietario de la tabla es opcional.ENABLE | DISABLE
Indica a SQL Server si debe recopilar datos de índice de texto completo para table_name. ENABLE activa el índice de texto completo; DISABLE lo desactiva.Cuando se deshabilita el índice de texto completo, los metadatos del índice de texto completo permanecen en las tablas del sistema. Si CHANGE_TRACKING está habilitado (actualización automática o manual) cuando se deshabilita el índice de texto completo, el estado del índice se inmoviliza, los rastreos en curso se detienen y no se mantiene un seguimiento de los nuevos cambios en los datos de la tabla ni se propagan los cambios al índice. Un índice de texto completo de table_name se puede reactivar con ENABLE.
SET CHANGE_TRACKING {MANUAL | AUTO | OFF}
Especifica si SQL Server propagará al índice de texto completo los cambios (actualizaciones, eliminaciones o inserciones) efectuados en las columnas de la tabla que cubre el índice de texto completo. Los cambios realizados en los datos con WRITETEXT y UPDATETEXT no se reflejan en el índice de texto completo y no se recopilan con el seguimiento de cambios.[!NOTA]
Para obtener información sobre la interacción del seguimiento de cambios y WITH NO POPULATION, vea "Comentarios", posteriormente en este tema.
MANUAL
Especifica que las marcas de revisión se propagarán manualmente llamando a la instrucción ALTER FULLTEXT INDEX … START UPDATE POPULATION de Transact-SQL (rellenado manual). Puede utilizar el Agente SQL Server para llamar a esta instrucción de Transact-SQL de forma periódica.AUTO
Especifica que los cambios sometidos a seguimiento se propagarán automáticamente cuando los datos se modifiquen en la tabla base (rellenado automático). Aunque los cambios se propagan de forma automática, podrían no reflejarse de inmediato en el índice de texto completo. AUTO es el valor predeterminado.OFF
Especifica que SQL Server no mantendrá una lista de cambios en los datos indizados.ADD | DROP column_name
Especifica las columnas que se agregarán o eliminarán de un índice de texto completo. La columna o columnas deben ser de tipo char, varchar, nchar, nvarchar, text, ntext, image, xml, varbinary o varbinary(max).Utilice la cláusula DROP sólo en columnas que se hayan habilitado previamente para la indización de texto completo.
Utilice TYPE COLUMN y LANGUAGE con la cláusula ADD para establecer estas propiedades en column_name. Cuando se agrega una columna, el índice de texto completo de la tabla se debe rellenar de nuevo para que funcionen las consultas de texto completo en esta columna.
[!NOTA]
Que se rellene el índice de texto completo una vez agregada o quitada una columna en un índice de texto completo depende de si está habilitado el seguimiento de cambios y de si se especifica WITH NO POPULATION. Para obtener más información, vea la sección "Comentarios" más adelante en este tema.
TYPE COLUMN type_column_name
Especifica el nombre de una columna de la tabla, type_column_name, que se utiliza para retener el tipo para un documento varbinary, varbinary(max) o image. Esta columna, denominada columna de tipo, contiene una extensión de archivo proporcionada por el usuario (.doc, .pdf, .xls, etc.). La columna de tipo debe ser char, nchar, varchar o nvarchar.Especifique TYPE COLUMN type_column_name únicamente si column_name especifica una columna de tipo varbinary, varbinary(max) o image, en la que los datos se almacenan como datos binarios; de lo contrario, SQL Server devuelve un error.
[!NOTA]
En el momento de la indización, el motor de texto completo utiliza la abreviatura de la columna de tipo de cada fila de la tabla para identificar el filtro de la búsqueda de texto completo que se va a utilizar para el documento en column_name. El filtro carga el documento como una secuencia binaria, quita la información del formato y envía el texto del documento al componente de separador de palabras. Para obtener más información, vea Filtros de búsqueda de texto completo.
LANGUAGE language_term
Es el idioma de los datos almacenados en column_name.language_term es opcional y se puede especificar como una cadena, un entero o un valor hexadecimal correspondiente al identificador de configuración regional (LCID) de un idioma. Si se especifica language_term, el idioma que representa se aplica a todos los elementos de la condición de búsqueda. Si no se especifica ningún valor, se utiliza el idioma de texto completo predeterminado de la instancia de SQL Server.
Utilice el procedimiento almacenado sp_configure para tener acceso a la información sobre el idioma de texto completo predeterminado de la instancia de SQL Server. Para obtener más información, vea default full-text language (opción).
Si se especifica como una cadena, language_term corresponde al valor de columna alias de la tabla del sistema syslanguages. La cadena debe ir entre comillas simples, como en 'language_term'. Si el valor especificado es un entero, language_term es el LCID real que identifica el idioma. Si se especifica como un valor hexadecimal, language_term es 0x seguido del valor hexadecimal del LCID. El valor hexadecimal no puede superar los ocho dígitos, incluidos los ceros a la izquierda.
Si el valor está en formato DBCS (juego de caracteres de doble byte), SQL Server lo convertirá a Unicode.
Se deben habilitar recursos, como los separadores de palabras y lematizadores, para el idioma especificado como language_term. Si estos recursos no admiten el idioma especificado, SQL Server devuelve un error.
Para las columnas no BLOB y no XML que contienen datos de texto en varios idiomas o en los casos en que se desconoce el idioma del texto almacenado en la columna, utilice el recurso de idioma neutro (0x0). Para los documentos almacenados en columnas de tipo XML o BLOB, la codificación de idioma del documento se utilizará en el momento de la indización. Por ejemplo, en las columnas XML, el atributo xml:lang de los documentos XML identifica el idioma. En el momento de la consulta, el valor especificado previamente en language_term se convierte en el idioma predeterminado que se utiliza para consultas de texto completo a menos que language_term se especifique como parte de una consulta de texto completo.
[ ,...n]
Indica que se pueden especificar varias columnas para las cláusulas ADD o DROP. Si se especifican varias columnas, sepárelas con comas.WITH NO POPULATION
Especifica que el índice de texto completo no se rellenará después de que se realice una de las operaciones de columna ADD y DROP, o una operación SET STOPLIST. El índice se rellenará sólo si el usuario ejecuta un comando START...POPULATION.Si se especifica NO POPULATION, SQL Server no rellena un índice. El índice se rellena únicamente cuando el usuario usa un comando ALTER FULLTEXT INDEX...START POPULATION. Cuando no se especifica NO POPULATION, SQL Server rellena el índice.
Si CHANGE_TRACKING está habilitado y se especifica WITH NO POPULATION, SQL Server devuelve un error. Si CHANGE_TRACKING está habilitado y no se especifica WITH NO POPULATION, SQL Server realiza un rellenado completo del índice.
[!NOTA]
Para obtener más información acerca de la interacción del seguimiento de cambios y WITH NO POPULATION, vea "Comentarios", más adelante en este tema.
START {FULL|INCREMENTAL|UPDATE} POPULATION
Indica a SQL Server que comience el rellenado del índice de texto completo de table_name. Si ya hay un rellenado de índice de texto completo en curso, SQL Server devuelve una advertencia y no inicia un nuevo rellenado.-
FULL
Especifica que se recuperarán todas las filas de la tabla para el indizado de texto completo, incluso si las filas ya se han indizado.INCREMENTAL
Especifica que sólo se recuperarán para el índice de texto completo las filas modificadas desde el último rellenado. INCREMENTAL se puede aplicar únicamente si la tabla tiene una columna de tipo timestamp. Si una tabla del catálogo de texto completo no contiene una columna de tipo timestamp, se realiza un rellenado completo de la tabla.UPDATE
Especifica el procesamiento de todas las inserciones, actualizaciones o eliminaciones desde la última vez que se actualizó el índice de seguimiento de cambios. Debe estar habilitado el rellenado de seguimiento de cambios en la tabla, pero el índice de actualización en segundo plano o el seguimiento automático de cambios no se deben activar.
{STOP | PAUSE | RESUME } POPULATION
Detiene o pausa cualquier operación de rellenado en curso; o bien detiene o reanuda cualquier operación de rellenado en pausa.STOP POPULATION no detiene el seguimiento automático de cambios ni el índice de actualización en segundo plano. Para detener el seguimiento de cambios, utilice SET CHANGE_TRACKING OFF.
PAUSE POPULATION y RESUME POPULATION sólo se pueden usar para operaciones de rellenado completas. No son relevantes para otros tipos de operación de rellenado porque las otras operaciones de rellenado reanudan los rastreos desde el punto en que se detuvieron.
SET STOPLIST { OFF| SYSTEM | stoplist_name }
Cambia la lista de palabras irrelevantes de texto completo que se va a asociar al índice.OFF
Especifica que no se asocie al índice de texto completo ninguna lista de palabras irrelevantes.SYSTEM
Especifica que la lista de palabras irrelevantes predeterminada de texto completo del sistema se debe usar para este índice de texto completo.stoplist_name
Especifica el nombre de la lista de palabras irrelevantes que se va a asociar al índice de texto completo.
[!NOTA]
Para obtener información sobre la interacción del seguimiento de cambios y WITH NO POPULATION, vea "Comentarios", posteriormente en este tema.
Notas
En las columnas xml, puede crear un índice de texto completo que indice el contenido de los elementos XML, pero omita el marcado XML. Los valores de los atributos se incluyen en el índice de texto completo a menos que sean valores numéricos. Las etiquetas de elemento se utilizan como límites de token. Se admiten fragmentos y documentos con formato XML o HTML correcto que contengan varios idiomas. Para obtener más información, vea Índice de texto completo en una columna XML.
Interacciones del seguimiento de cambios y del parámetro NO POPULATION
Que se rellene el índice de texto completo depende de si el seguimiento de cambios está habilitado y si se especifica WITH NO POPULATION en la instrucción ALTER FULLTEXT INDEX. En la tabla siguiente se resume el resultado de su interacción.
Seguimiento de cambios |
WITH NO POPULATION |
Resultado |
---|---|---|
No se ha habilitado |
No se ha especificado |
Se realiza un rellenado completo en el índice. |
No se ha habilitado |
Se ha especificado |
No se produce el rellenado del índice hasta que se emite una instrucción ALTER FULLTEXT INDEX...START POPULATION. |
Habilitado |
Se ha especificado |
Se produce un error y no se altera el índice. |
Habilitado |
No se ha especificado |
Se realiza un rellenado completo en el índice. |
Permisos
El usuario debe tener el permiso ALTER en la tabla o vista indizada, o ser un miembro de la función fija del servidor sysadmin o de las funciones fijas de la base de datos db_owner o db_ddladmin.
Si se especifica SET STOPLIST, el usuario debe tener el permiso REFERENCES en la lista de palabras irrelevantes. El propietario de la lista de palabras irrelevantes puede conceder este permiso. Además, la concesión del permiso REFERENCES requiere los permisos ALTER FULLTEXT CATALOG.
[!NOTA]
Los usuarios tienen el permiso REFERENCE para la lista de palabras irrelevantes predeterminada que se incluye con SQL Server.
Ejemplos
Los ejemplos siguientes modifican el índice de texto completo de la tabla JobCandidate de la base de datos AdventureWorks.
USE AdventureWorks;
GO
ALTER FULLTEXT INDEX ON HumanResources.JobCandidate ENABLE;
GO
Historial de cambios
Contenido actualizado |
---|
Se actualizó la sección "Interacciones del seguimiento de cambios y del parámetro NO POPULATION" al corregir los valores de la columna WITH NO POPULATION cuando el seguimiento de cambios está habilitado. |
Vea también