Configurar y administrar separadores de palabras y lematizadores para la búsquedaConfigure and Manage Word Breakers and Stemmers for Search

SE APLICA A: síSQL Server síAzure SQL Database noAzure SQL Data Warehouse noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Los separadores de palabras y lematizadores realizan un análisis lingüístico de todos los datos indizados de texto completo.Word breakers and stemmers perform linguistic analysis on all full-text indexed data. El análisis lingüístico realiza las siguientes dos cosas:Linguistic analysis does the following two things:

  • Buscar los límites de palabras (separación de palabras) .Find word boundaries (word-breaking). 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.The word breaker identifies individual words by determining where word boundaries exist based on the lexical rules of the language. 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.Each word (also known as a token) is inserted into the full-text index using a compressed representation to reduce its size.

  • Conjugar verbos (lematización) .Conjugate verbs (stemming). 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").The stemmer generates inflectional forms of a particular word based on the rules of that language (for example, "running", "ran", and "runner" are various forms of the word "run").

Los separadores de palabras y los lematizadores son específicos del idiomaWord breakers and stemmers are language specific

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.Word breakers and stemmers are language specific, and the rules for linguistic analysis differ for different languages. Los separadores de palabras específicos del idioma hacen que los términos resultantes sean más precisos para dicho idioma.Language-specific word breakers make the resulting terms more accurate for that language.

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.To use the word breakers and stemmers provided for all the languages supported by SQL Server, you typically don't have to take any action.

  • Cuando hay un separador de palabras para la familia de idiomas, pero no para el subidioma específico, se utiliza el del idioma principal.Where there is a word breaker for the language family, but not for the specific sub-language, the major language is used. Por ejemplo, el separador de palabras del francés se utiliza en el texto escrito en francés de Canadá.For example, the French word breaker is used to handle text that is French Canadian.
  • Si no hay ningún separador de palabras disponible para un idioma concreto, se utiliza el separador de palabras neutral.If no word breaker is available for a particular language, the neutral word breaker is used. El separador de palabras neutral divide las palabras en caracteres neutrales como espacios y marcas de puntuación.With the neutral word breaker, words are broken at neutral characters such as spaces and punctuation marks.

Obtener una lista de los idiomas admitidosGet the list of supported languages

Para ver la lista de los idiomas que la búsqueda de texto completo de SQL ServerSQL Server admite, utilice la siguiente instrucción de Transact-SQLTransact-SQL.To see the list of languages supported by SQL ServerSQL Server Full-Text Search, use the following Transact-SQLTransact-SQL statement. La presencia de un idioma en esta lista indica que los separadores de palabras se registran para el idioma.The presence of a language in this list indicates that word breakers are registered for the language.

SELECT * FROM sys.fulltext_languages

Obtener la lista de separadores de palabras registradosGet the list of registered word breakers

Para que la búsqueda de texto completo use los separadores de palabras para un idioma, deben estar registrados.For Full-Text Search to use the word breakers for a language, they must be registered. 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.For registered word breakers, associated linguistic resources - stemmers, noise words (stopwords), and thesaurus files - also become available to full-text indexing and querying operations.

Para ver la lista de componentes de separadores de palabras registrados, utilice la siguiente instrucción.To see the list of registered word breaker components, use the following statement.

EXEC sp_help_fulltext_system_components 'wordbreaker';  
GO  

Para obtener opciones adicionales y más información, vea sp_help_fulltext_system_components (Transact-SQL).For additional options and more info, see sp_help_fulltext_system_components (Transact-SQL).

Si agrega o quita un separador de palabrasIf you add or remove a word breaker

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.If you add, remove, or alter a word breaker, you need to refresh the list of Microsoft Windows locale identifiers (LCIDs) that are supported for full-text indexing and querying. Para obtener más información, consulte ver o cambiar los filtros registrados y separadores de palabras.For more information, see View or Change Registered Filters and Word Breakers.

Establecer la opción Idioma de texto completo predeterminadoSet the default full-text language option

En las versiones localizadas de SQL ServerSQL Server, el programa de instalación de SQL ServerSQL Server establece la opción Idioma de texto completo predeterminado en el idioma del servidor, si existe una correspondencia apropiada.For a localized version of SQL ServerSQL Server, SQL ServerSQL Server Setup sets the default full-text language option to the language of the server if an appropriate match exists. En el caso de una versión no localizada de SQL ServerSQL Server, el valor de la opción Idioma de texto completo predeterminado es Inglés.For a non-localized version of SQL ServerSQL Server, the default full-text language option is English.

Al crear o modificar un índice de texto completo, puede especificar un idioma diferente para cada columna indizada de texto completo.When you create or alter a full-text index, you can specify a different language for each full-text indexed column. 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.If no language is specified for a column, the default is the value of the configuration option default full-text language.

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.All columns listed in a single full-text query function clause must use the same language, unless the LANGUAGE option is specified in the query. 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).The language used for the full-text indexed column being queried determines the linguistic analysis performed on arguments of the full-text query predicates (CONTAINS and FREETEXT) and functions (CONTAINSTABLE and FREETEXTTABLE).

Elegir el idioma para una columna indizadaChoose the language for an indexed column

Al crear un índice de texto completo, es recomendable que especifique un idioma para cada columna indizada.When creating a full-text index, we recommend that you specify a language for each indexed column. Si un idioma no se especifica para una columna, el sistema utiliza el idioma predeterminado del sistema.If a language is not specified for a column, the system default language is used. El idioma de una columna determina el separador de palabras y el lematizador que se utilizará para indizar esa columna.The language of a column determines which word breaker and stemmer are used for indexing that column. Además, las consultas de texto completo de la columna utilizarán el archivo de diccionario de sinónimos del idioma.Also, the thesaurus file of that language will be used by full-text queries on the column.

Hay varios aspectos que deben tenerse en cuenta al elegir el idioma de columna cuando se crea un índice de texto completo.There are a couple of things to consider when choosing the column language for creating a full-text index. Estas consideraciones se refieren al modo en que se acorta el texto y se indiza a continuación mediante el motor de texto completo.These considerations relate to how your text is tokenized and then indexed by Full-Text Engine. Para obtener más información, vea Elegir un idioma al crear un índice de texto completo.For more information, see Choose a Language When Creating a Full-Text Index.

Para ver el idioma del separador de palabras de determinadas columnas, ejecute la siguiente instrucción.To view the word breaker language of specific columns, run the following statement.

SELECT language_id AS 'LCID' FROM sys.fulltext_index_columns;

Para más información y opciones adicionales, vea sys.fulltext_index_columns (Transact-SQL).For additional options and more info, see sys.fulltext_index_columns (Transact-SQL).

Solucionar problemas de errores de tiempo de espera en la separación de palabrasTroubleshoot word-breaking time-out errors

Se puede producir un error de tiempo de espera en la separación de palabras en diversas situaciones.A word-breaking time-out error may occur in a variety of situations. Para más información sobre estas situaciones y cómo responder en cada situación, vea MSSQLSERVER_30053.or information about these situations and how to respond in each situation, see MSSQLSERVER_30053.

Información sobre el error MSSQLSERVER_30053Info about the MSSQLSERVER_30053 error

PropiedadProperty ValorValue
Nombre del productoProduct Name SQL ServerSQL Server
Identificador del eventoEvent ID 3005330053
Origen del eventoEvent Source MSSQLSERVERMSSQLSERVER
ComponenteComponent SQLEngineSQLEngine
Nombre simbólicoSymbolic Name FTXT_QUERY_E_WORDBREAKINGTIMEOUTFTXT_QUERY_E_WORDBREAKINGTIMEOUT
Texto del mensajeMessage Text Se agotó el tiempo de espera de separación de palabras para la cadena de consulta de texto completo.Word breaking timed out for the full-text query string. 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.This can happen if the wordbreaker took a long time to process the full-text query string, or if a large number of queries are running on the server. Intente ejecutar de nuevo la consulta con menos carga.Try running the query again under a lighter load.

ExplicaciónExplanation

Se puede producir un error de tiempo de espera en la separación de palabras en las situaciones siguientes:A word-breaking timeout error can occur in the following situations:

  • El separador de palabras para el lenguaje de consultas está configurado incorrectamente; por ejemplo, la configuración del Registro es incorrecta.The word breaker for the query language is configured incorrectly; for example, its registry settings are incorrect.

  • El separador de palabras no funciona correctamente para una cadena de consulta determinada.The word breaker malfunctions for a specific query string.

  • El separador de palabras devuelve demasiados datos para una cadena de consulta determinada.The word breaker returns too much data for a specific query string. 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.Excess data is treated as a potential buffer overrun attack, and shuts down the filter daemon process (fdhost.exe), which hosts the word-breaking services.

  • La configuración del proceso de demonio de filtro es incorrecta.The filter daemon process configuration is incorrect.

    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.The most common configuration problems are password expiration or a domain policy that prevents the filter daemon account from logging on.

  • 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.A very heavy query workload is running on the server instance; for example, the word-breaker took a long time to process the full-text query string, or a large number of queries are running on the server. Tenga en cuenta que esta es la causa menos probable.Note that this is the least likely cause.

Acción del usuarioUser Action

Seleccione la acción del usuario que sea adecuada según la causa probable de tiempo de espera, de la forma siguiente:Select the user action that is appropriate to the probable cause of the timeout, as follows:

Causa probableProbable cause Acción del usuarioUser action
El separador de palabras del lenguaje de consulta está configurado incorrectamente.The word breaker for the query language is configured incorrectly. Si usa un separador de palabras de otro fabricante, podría estar registrado incorrectamente en el sistema operativo.If you are using a third-party word breaker it might be incorrectly registered with the operating system. En este caso, registre de nuevo el separador de palabras.In this case, re-register the word breaker. 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).For more information, see Revert the Word Breakers Used by Search to the Previous Version.
El separador de palabras no funciona correctamente para una cadena de consulta determinada.The word breaker malfunctions for a specific query string. Si SQL ServerSQL Server admite el separador de palabras, póngase en contacto con el Servicio de atención al cliente y soporte técnico de Microsoft.If the word breaker is supported by SQL ServerSQL Server, contact Microsoft Customer Service and Support.
El separador de palabras devuelve demasiados datos para una cadena de consulta determinada.The word breaker returns too much data for a specific query string. Si SQL ServerSQL Server admite el separador de palabras, póngase en contacto con el Servicio de atención al cliente y soporte técnico de Microsoft.If the word breaker is supported by SQL ServerSQL Server, contact Microsoft Customer Service and Support.
La configuración del proceso de demonio de filtro es incorrecta.The filter daemon process configuration is incorrect. 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.Ensure that you are using the current password and that a domain policy is not preventing the filter daemon account from logging on.
Se está ejecutando un alto volumen de carga de trabajo de consultas en la instancia de servidor.A very heavy query workload is running on the server instance. Intente ejecutar de nuevo la consulta con menos carga.Try running the query again under a lighter load.

Descripción del impacto de separadores de palabras actualizadosUnderstand the impact of updated word breakers

Cada versión de SQL ServerSQL Server normalmente incluye nuevos separadores de palabras que tienen mejores reglas lingüísticas y son más precisos que los anteriores separadores de palabras.Each version of SQL ServerSQL Server typically includes new word breakers that have better linguistic rules and are more accurate than earlier word breakers. Los nuevos separadores de palabras podrían comportarse de manera ligeramente diferente que los separadores de palabras de los índices de texto completo que se importaron de versiones anteriores de SQL ServerSQL Server.Potentially, the new word breakers might behave slightly differently from the word breakers in full-text indexes that were imported from previous versions of SQL ServerSQL Server.

Esto es relevante si se importó un catálogo de texto completo cuando una base de datos se actualizó a la versión actual de SQL ServerSQL Server.This is significant if a full-text catalog was imported when a database was upgraded to the current version of SQL ServerSQL 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.One or more languages used by the full-text indexes in the full-text catalog might now be associated with new word breakers. Para obtener más información, vea Actualizar la búsqueda de texto completo.For more information, see Upgrade Full-Text Search.

Consulte tambiénSee Also

CREATE FULLTEXT INDEX (Transact-SQL) CREATE FULLTEXT INDEX (Transact-SQL)
ALTER 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 completoConfigure and Manage Stopwords and Stoplists for Full-Text Search