Configuración y administración de separadores de palabras y lematizadores para la búsqueda (SQL Server)

Se aplica a:SQL ServerAzure SQL Database

Los separadores de palabras y lematizadores realizan un análisis lingüístico de todos los datos indizados de texto completo. El análisis lingüístico realiza las siguientes dos cosas:

  • Buscar los límites de palabras (separación de palabras). El separador de palabras identifica las palabras individuales determinando los límites de palabras en función de las reglas léxicas de ese idioma. Cada palabra (también conocida como token) se inserta en el índice de texto completo usando una representación comprimida para reducir su tamaño.

  • Conjugar verbos (lematización). El lematizador genera las formas de inflexión de una palabra determinada en función de las reglas de ese idioma (por ejemplo, "corriendo", "corrió" y "corredor" son varias formas de la palabra "carrera").

Los separadores de palabras y los lematizadores son específicos del idioma

Los separadores de palabras y lematizadores son específicos del idioma, y las reglas para el análisis lingüístico difieren en los diferentes idiomas. Los separadores de palabras específicos del idioma hacen que los términos resultantes sean más precisos para dicho idioma.

Para usar los separadores de palabras y lematizadores proporcionados para todos los idiomas compatibles con SQL Server, normalmente no es necesario realizar ninguna acción.

  • Cuando hay un separador de palabras para la familia de idiomas, pero no para el subidioma específico, se utiliza el del idioma principal. Por ejemplo, el separador de palabras del francés se utiliza en el texto escrito en francés de Canadá.
  • Si no hay ningún separador de palabras disponible para un idioma concreto, se utiliza el separador de palabras neutral. El separador de palabras neutral divide las palabras en caracteres neutrales como espacios y marcas de puntuación.

Obtener una lista de los idiomas admitidos

Para ver la lista de idiomas admitidos por la búsqueda de texto completo de SQL Server, use la siguiente instrucción Transact-SQL. La presencia de un idioma en esta lista indica que los separadores de palabras se registran para el idioma.

SELECT * FROM sys.fulltext_languages

Obtener la lista de separadores de palabras registrados

Para que la búsqueda de texto completo use los separadores de palabras para un idioma, deben estar registrados. Con los separadores de palabras registrados, los recursos lingüísticos asociados (lematizadores, palabras irrelevantes y archivos de sinónimos) también están disponibles para las operaciones de indización y consulta de texto completo.

Para ver la lista de componentes de separadores de palabras registrados, utilice la siguiente instrucción.

EXEC sp_help_fulltext_system_components 'wordbreaker';  
GO  

Para obtener más opciones y más información, consulte sp_help_fulltext_system_components (Transact-SQL).

Si agrega o quita un separador de palabras

Si agrega, quita o modifica un separador de palabras, necesita actualizar la lista de identificadores de configuración regional (LCID) de Microsoft Windows que se admiten para la indización y las consultas de texto completo. Para obtener más información, consulte ver o cambiar los filtros registrados y separadores de palabras.

Establecer la opción Idioma de texto completo predeterminado

En las versiones localizadas de SQL Server, el programa de instalación de SQL Server establece la opción Idioma de texto completo predeterminado en el idioma del servidor, si existe una correspondencia apropiada. En el caso de una versión no localizada de SQL Server, el valor de la opción Idioma de texto completo predeterminado es Inglés.

Al crear o modificar un índice de texto completo, puede especificar un idioma diferente para cada columna indizada de texto completo. Si no se especifica ningún idioma para una columna, el valor predeterminado es el de la opción de configuración Idioma de texto completo predeterminado.

Nota:

Todas las columnas de una cláusula de función de consulta de texto completo deben utilizar el mismo idioma, a menos que se especifique la opción LANGUAGE en la consulta. El idioma de la columna indexada de texto completo que se consulta determina el análisis lingüístico realizado en los argumentos de los predicados de la consulta de texto completo (CONTAINS y FREETEXT) y de las funciones (CONTAINSTABLE y FREETEXTTABLE).

Elegir el idioma para una columna indizada

Al crear un índice de texto completo, es recomendable que especifique un idioma para cada columna indizada. Si un idioma no se especifica para una columna, el sistema utiliza el idioma predeterminado del sistema. El idioma de una columna determina el separador de palabras y el lematizador que se utilizará para indizar esa columna. Además, las consultas de texto completo de la columna utilizarán el archivo de diccionario de sinónimos del idioma.

Hay varios aspectos que deben tenerse en cuenta al elegir el idioma de columna cuando se crea un índice de texto completo. Estas consideraciones se refieren al modo en que se acorta el texto y se indiza a continuación mediante el motor de texto completo. Para obtener más información, vea Elegir un idioma al crear un índice de texto completo.

Para ver el idioma del separador de palabras de determinadas columnas, ejecute la siguiente instrucción.

SELECT language_id AS 'LCID' FROM sys.fulltext_index_columns;

Para obtener más opciones y más información, consulte sys.fulltext_index_columns (Transact-SQL).

Solucionar problemas de errores de tiempo de espera en la separación de palabras

Se puede producir un error de tiempo de espera en la separación de palabras en diversas situaciones. Para más información sobre estas situaciones y cómo responder en cada situación, vea MSSQLSERVER_30053.

Información sobre el error MSSQLSERVER_30053

Propiedad Valor
Nombre del producto SQL Server
Id. de evento 30053
Origen de eventos MSSQLSERVER
Componente SQLEngine
Nombre simbólico FTXT_QUERY_E_WORDBREAKINGTIMEOUT
Texto del mensaje Se agotó el tiempo de espera de separación de palabras para la cadena de consulta de texto completo. Esto puede ocurrir si el divisor de palabras tarda mucho tiempo en procesar la cadena de consulta de texto completo, o si se está ejecutando un gran número de consultas en el servidor. Intente ejecutar de nuevo la consulta con menos carga.

Explicación

Se puede producir un error de tiempo de espera en la separación de palabras en las situaciones siguientes:

  • El separador de palabras para el lenguaje de consultas está configurado incorrectamente; por ejemplo, la configuración del Registro es incorrecta.

  • El separador de palabras no funciona correctamente para una cadena de consulta determinada.

  • El separador de palabras devuelve demasiados datos para una cadena de consulta determinada. Un exceso de datos se trata como un ataque potencial por saturación del búfer y se cierra el proceso de demonio de filtro (fdhost.exe), que hospeda los servicios de separación de palabras.

  • La configuración del proceso de demonio de filtro es incorrecta.

    Los problemas de configuración más comunes son la expiración de las contraseñas o una política de dominio que impide que la cuenta de demonio de filtro inicie sesión.

  • Una carga de trabajo de consulta muy pesada se ejecuta en la instancia del servidor; por ejemplo, el separador de palabras tardó mucho en procesar la cadena de consulta de texto completo o un número grande de consultas se está ejecutando en el servidor. Tenga en cuenta que esta es la causa menos probable.

Acción del usuario

Seleccione la acción del usuario que sea adecuada según la causa probable de tiempo de espera, de la forma siguiente:

Causa probable Acción del usuario
El separador de palabras del lenguaje de consulta está configurado incorrectamente. Si usa un separador de palabras de otro fabricante, podría estar registrado incorrectamente en el sistema operativo. En este caso, registre de nuevo el separador de palabras. Para más información, vea Revertir los separadores de palabras usados por las búsquedas a la versión anterior (Revertir los separadores de palabras usados por las búsquedas a la versión anterior).
El separador de palabras no funciona correctamente para una cadena de consulta determinada. Si el separador de palabras es compatible con SQL Server, póngase en contacto con el servicio de atención al cliente y el soporte técnico de Microsoft.
El separador de palabras devuelve demasiados datos para una cadena de consulta determinada. Si el separador de palabras es compatible con SQL Server, póngase en contacto con el servicio de atención al cliente y el soporte técnico de Microsoft.
La configuración del proceso de demonio de filtro es incorrecta. Asegúrese de que está utilizando la contraseña actual y que una directiva de dominio no está evitando que la cuenta de demonio de filtro se registre.
Se está ejecutando un alto volumen de carga de trabajo de consultas en la instancia de servidor. Intente ejecutar de nuevo la consulta con menos carga.

Descripción del impacto de separadores de palabras actualizados

Cada versión de SQL Server normalmente incluye nuevos separadores de palabras que tienen mejores reglas lingüísticas y son más precisos que los separadores de palabras anteriores. Potencialmente, los nuevos separadores de palabras pueden comportarse de forma ligeramente diferente de los separadores de palabras en índices de texto completo importados de versiones anteriores de SQL Server.

Esto es importante si se importó un catálogo de texto completo cuando se actualizó una base de datos a la versión actual de SQL Server. Un o varios idiomas que Usen los índices de texto completo del catálogo de texto completo podrían estar asociados ahora a nuevos separadores de palabras. Para obtener más información, vea Actualizar la búsqueda de texto completo.

Consulte también

CREATE FULLTEXT INDEX (Transact-SQL)
ALTER FULLTEXT INDEX (Transact-SQL)
Configurar y administrar palabras irrelevantes y listas de palabras irrelevantes para la búsqueda de texto completo