Configurar y administrar los separadores de palabras y los reductores de raíces

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

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 utilizar los separadores de palabras y los formadores de raíces proporcionados para todos los idiomas compatibles con el motor de base de datos de SQL Server, normalmente no es necesario realizar ninguna acción.

  • Donde hay un separador de palabras para la familia de idiomas, pero no para el sublanguaje específico, se usa el idioma principal. Por ejemplo, el divisor de palabras en francés se utiliza para procesar texto en francés canadiense.

  • 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 lenguajes soportados por Full-Text Search, utilice la siguiente Transact-SQL afirmación. Que un idioma aparezca en esta lista indica que hay divisores de palabras registrados para ese idioma.

SELECT *
FROM sys.fulltext_languages;

Obtenga la lista de divisores de palabras registrados

Para que la búsqueda de texto completo use los separadores de palabras para un idioma, deben estar registrados. Para los descifradores de palabras registrados, los recursos lingüísticos asociados también están disponibles para operaciones de indexación y consulta de texto completo. Estos recursos incluyen formadores de raíces, palabras irrelevantes (palabras de parada) y archivos de tesauro.

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

EXECUTE sp_help_fulltext_system_components 'wordbreaker';
GO

Para obtener más información, consulte sp_help_fulltext_system_components.

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, vea Personalizar filtros y separadores de palabras.

Establecer la opción de 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 enumeradas en una sola cláusula de función de consulta de texto completo deben usar el mismo lenguaje, a menos que se especifique la LANGUAGE opción 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

Cuando crees un índice de texto completo, especifica un idioma para cada columna indexada. Si no se especifica un idioma para una columna, se usa 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 a cómo se tokeniza el texto y luego se indexa por el motor de búsqueda de texto completo. Para más información, consulte 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 información, consulte sys.fulltext_index_columns.

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 las siguientes situaciones: Para obtener información sobre estas situaciones y cómo responder en cada situación, consulte MSSQLSERVER_30053.

Información sobre el error de MSSQLSERVER_30053

Propiedad Valor
Nombre del producto Servidor SQL
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 del lenguaje de consulta está configurado incorrectamente. Por ejemplo, sus ajustes de registro son incorrectos.

  • 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. El exceso de datos se trata como un posible ataque de desbordamiento de búfer y provoca el cierre del proceso del demonio de filtrado (fdhost.exe), que hospeda los servicios de segmentación de palabras.

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

    Los problemas de configuración más comunes son la caducidad de la contraseña o una política de dominio que impide que la cuenta del daemon de filtro pueda iniciar sesión.

  • Se está ejecutando un alto volumen de carga de trabajo de consultas en la instancia de servidor. Por ejemplo, el rompepalabras tardaba mucho en procesar la cadena de consulta de texto completo, o se ejecutaban un gran número de consultas en el servidor. 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 terceros, es posible que se registre incorrectamente con el sistema operativo. En este caso, registre de nuevo el separador de palabras. Para obtener más información, vea Revert word breakers used by Full-Text Search to previous version (Revertir separadores de palabras usados por Full-Text Search 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 el Motor de base de datos, póngase en contacto con el Servicio de atención al cliente y 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 el Motor de base de datos, póngase en contacto con el servicio de atención al cliente y soporte técnico de Microsoft.
La configuración del proceso de daemon 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.

Comprenda el impacto de los separadores de palabras actualizados

Cada versión del Motor de base de datos puede incluir rompepalabras actualizadas con reglas lingüísticas revisadas. Estos divisores de palabras actualizados podrían comportarse de forma diferente a los divisores de palabras de los índices de texto completo que se importaron desde versiones anteriores de Motor de base de datos.

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