Cambios principales en la búsqueda de texto completo
En este tema se describen los principales cambios producidos en la búsqueda de texto completo. Estos cambios pueden provocar errores en las aplicaciones, en los scripts o en las funcionalidades basados en versiones anteriores de SQL Server. Podría encontrar estos problemas al actualizar. Para obtener más información, vea Usar el Asesor de actualizaciones para preparar las actualizaciones.
Cambios importantes en la búsqueda de texto completo de SQL Server 2012
Intercalación modificada para la columna de nombre en sys.fulltext_languages
La intercalación de la columna de nombre de idioma en la vista de catálogo sys.fulltext_languages (Transact-SQL) se ha cambiado y ha pasado de la intercalación fija de la base de datos Resource a la intercalación predeterminada que se haya seleccionado para la instancia de SQL Server. Este cambio permite comparar los valores en la columna nombre cuando se combina la vista de sys.syslanguages (Transact-SQL) con sys.fulltext_languages. Por ejemplo, puede consultar para todas las bases de datos donde el idioma de texto completo predeterminado es distinto del idioma predeterminado de la base de datos.
Cambios recientes en la búsqueda de texto completo de SQL Server 2008
Se aplican los siguientes cambios principales a la búsqueda de texto completo entre SQL Server 2005 y SQL Server 2008 y versiones posteriores.
Característica |
Escenario |
SQL Server 2005 |
SQL Server 2008 y versiones posteriores. |
---|---|---|---|
CONTAINSTABLE con tipos definidos por el usuario (UDT) |
La clave de texto completo es un tipo definido por el usuario de SQL Server, por ejemplo, MyType = char(1). |
La clave devuelta es del tipo asignado al tipo definido por el usuario. En el ejemplo, sería char(1). |
La clave devuelta es del tipo definido por el usuario. En el ejemplo, sería MyType. |
Parámetro top_n_by_rank (de las instrucciones CONTAINSTABLE y FREETEXTTABLE Transact-SQL) |
Consultas top_n_by_rank que usan 0 como parámetro. |
Produce un mensaje de error que indica que debe utilizar un valor mayor que cero. |
Tiene éxito y devuelve cero filas. |
CONTAINSTABLE y ItemCount |
Eliminar las filas de la tabla base antes de insertar los cambios en MSSearch. |
CONTAINSTABLE devuelve el registro fantasma. ItemCount no se cambia. |
CONTAINSTABLE no devuelve ningún registro fantasma. |
ItemCount |
La tabla contiene documentos nulos o columnas de tipo. |
Además de los documentos indizados, los documentos que son nulos o que tienen tipos nulos se contabilizan en el valor ItemCount. |
Solo los documentos indizados se contabilizan en el valor ItemCount. |
ItemCount de catálogo |
Columna Blob con una extensión NULL. |
Se contabiliza en ItemCount de catálogo |
No se contabiliza en ItemCount de catálogo. |
UniqueKeyCount |
Consultar un recuento de claves únicas de un catálogo, por ejemplo, dos tablas (table1 y table2) cada una con tres palabras: word1, word2 y word3. |
UniqueKeyCount = 9. En la tabla siguiente se resume cómo se obtiene este valor: table1 = 3 EOF para el índice de texto completo de table1 = 1 table2 = 3 EOF para el índice de texto completo de table2 = 1 catálogo de texto completo = 1 |
Para cada tabla, UniqueKeyCount es el número de palabras clave distintas + 1 (0xFF). NO trata las mismas palabras en > 1 doc como una nueva clave única. Para un catálogo, UniqueKeyCount es la suma del UniqueKeyCount de cada una de las tablas bajo el catálogo. Las palabras idénticas de las tablas diferentes se tratan como claves únicas. En este caso, el recuento de claves únicas es 8. |
Opción precompute rank de nivel de servidor |
Optimización de rendimiento de las consultas FREETEXTTABLE. |
Cuando el valor de la opción es 1, las consultas FREETEXTTABLE especificadas con top_n_by_rank utilizan los datos de rangos precalculados almacenados en los catálogos de texto completo. |
No se admite. |
sp_fulltext_pendingchanges al actualizar la columna de clave |
Actualizar la columna de clave de texto completo en una fila de una tabla de 2 filas y ejecutar sp_fulltext_pendingchanges. |
Ambas filas aparecen. |
Solo aparece una fila. |
Funciones insertadas |
Funciones insertadas con un operador de texto completo |
Devuelve un mensaje de error. |
Devuelve las filas pertinentes. |
Habilitar o deshabilitar la búsqueda de texto completo con sp_fulltext_database. |
No se devuelve ningún resultado para las consultas de texto completo. Si el texto completo está deshabilitado para la base de datos, no se permiten operaciones de texto completo. |
Devuelve resultados para las consultas de texto completo y las operaciones de texto completo permitidas, aun cuando el texto completo esté deshabilitado para la base de datos. |
|
Palabras irrelevantes específicas de la configuración regional |
Consultas en tipos Variant específicos de la configuración regional de un idioma principal, como francés belga y francés canadiense. |
Los componentes (separadores de palabras, lematizadores y palabras irrelevantes) del idioma principal procesan las consultas en tipos Variant específicos de la configuración regional. Por ejemplo, los componentes de francés (Francia) se utilizan para analizar el francés (Bélgica). |
Debe agregar explícitamente las palabras irrelevantes para cada identificador de configuración regional (LCID). Por ejemplo, necesitaría especificar un LCID para Bélgica, Canadá y Francia. |
Proceso de lematización de sinónimos |
Usar el diccionario de sinónimos y formas no flexionadas (lematización). |
Una palabra del diccionario de sinónimos se lematiza automáticamente después de su expansión. |
Si desea la forma flexionada en la expansión, tiene que agregarla explícitamente. |
Ruta de acceso del catálogo de texto completo y grupo de archivos |
Trabajar con catálogos de texto completo. |
Cada catálogo de texto completo tiene una ruta de acceso física y pertenece a un grupo de archivos. Se trata como un archivo de base de datos. |
Un catálogo de texto completo es un objeto virtual y no pertenece a ningún grupo de archivos. Un catálogo de texto completo es un concepto lógico que hace referencia a un grupo de índices de texto completo.
|
Usar path, data_space_id y file_id de esta vista de catálogo. |
Estas columnas devuelven un valor concreto. |
Estas columnas devuelven NULL porque el catálogo de texto completo ya no se encuentra en el sistema de archivos. |
|
Usar la columna path de esta tabla del sistema desusada. |
Devuelve la ruta de acceso al sistema de archivos del catálogo de texto completo. |
Devuelve NULL porque el catálogo de texto completo ya no se encuentra en el sistema de archivos. |
|
Usar la columna PATH de estos procedimientos almacenados desusados. |
Devuelve la ruta de acceso al sistema de archivos del catálogo de texto completo. |
Devuelve NULL porque el catálogo de texto completo ya no se encuentra en el sistema de archivos. |
|
Usar sp_help_fulltext_catalog_components de este procedimiento almacenado. |
Devuelve una lista con todos los componentes (filtros, separadores de palabras y controladores de protocolo) que se usan en los catálogos de texto completo de la base de datos actual. |
Devuelve filas vacías. |
|
Uso de la propiedad IsFullTextEnabled. |
El valor IsFullTextEnabled indica si la búsqueda de texto completo está habilitada en una base de datos determinada. |
El valor de esta columna no tiene ningún efecto. En las bases de datos de usuario siempre está habilitada la búsqueda de texto completo. |