Configurar y administrar archivos de sinónimos para búsquedas de texto completoConfigure and Manage Thesaurus Files for Full-Text Search

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

Las consultas de búsqueda de texto completo de SQL ServerSQL Server pueden buscar sinónimos de los términos especificados por el usuario usando un diccionario de sinónimos de búsqueda de texto completo.SQL ServerSQL Server Full-Text Search queries can search for synonyms of user-specified terms through the use of a Full-Text Search thesaurus. Cada diccionario de sinónimos define un conjunto de sinónimos para un idioma concreto.Each thesaurus defines a set of synonyms for a specific language. Al desarrollar un diccionario de sinónimos personalizado para los datos de texto completo, puede ampliar de forma eficaz el ámbito de las consultas de texto completo en esos datos.By developing a thesaurus tailored to your full-text data, you can effectively broaden the scope of full-text queries on that data.

La comprobación de coincidencia con el diccionario de sinónimos tiene lugar para todas las consultas FREETEXT y FREETEXTABLE , y para las consultas CONTAINS y CONTAINSTABLE que especifican la cláusula FORMSOF THESAURUS.Thesaurus matching occurs for all FREETEXT and FREETEXTABLE queries and for any CONTAINS and CONTAINSTABLE queries that specify the FORMSOF THESAURUS clause.

Un diccionario de sinónimos de búsqueda de texto completo es un archivo de texto XML.A Full-Text Search thesaurus is an XML text file.

¿Qué es un diccionario de sinónimos?What's in a thesaurus

Para que las consultas de búsqueda de texto completo puedan buscar sinónimos en un idioma determinado, debe definir las asignaciones del diccionario de sinónimos (es decir, los sinónimos) de ese idioma.Before full-text search queries can look for synonyms in a given language, you have to define thesaurus mappings (that is, synonyms) for that language. Cada diccionario de sinónimos se debe configurar manualmente para definir lo siguiente:Each thesaurus must be manually configured to define the following:

  • Conjunto de expansiónExpansion set

    Un conjunto de expansión contiene un grupo de sinónimos como "escritor", "autor" y "periodista" que se sustituyen entre si en una consulta de texto completo.An expansion set contains a group of synonyms such as "writer", "author", and "journalist" that are substituted for one another by a full-text query. Las consultas que contienen una coincidencia para algún sinónimo en un conjunto de expansión se expanden para incluir uno de cada dos sinónimos en el conjunto de expansión.Queries that contain a match for any synonym in an expansion set are expanded to include every other synonym in the expansion set.

    Para más información, vea Estructura XML de un conjunto de expansión, posteriormente en este tema.For more information, see XML Structure of an Expansion Set later in this topic.

  • Conjunto de reemplazoReplacement set

    Un conjunto de reemplazo contiene un patrón de texto que se reemplazará por un conjunto de sustitución.A replacement set contains a text pattern to be replaced by a substitution set. Para obtener un ejemplo, vea la sección Estructura XML de un conjunto de reemplazo más adelante en este tema.For an example, see the section XML Structure of a Replacement Set later in this topic.

  • Configuración de signos diacríticosDiacritics setting

    En un diccionario de sinónimos determinado, todos los patrones de búsqueda distinguen o no las marcas diacríticas como la tilde ( ~ ), la marca de acento agudo ( ´ ) o la diéresis ( ¨ ) (es decir, distinguen acentos o no distinguen acentos).For a given thesaurus, all search patterns are either sensitive or insensitive to diacritical marks such as a tilde (~), acute accent mark (´), or umlaut (¨) (that is, accent sensitive or accent insensitive). Por ejemplo, imagine que especifica el patrón "café" para que sea reemplazado por otros patrones en una consulta de búsqueda de texto completo.For example, suppose you specify the pattern "café" to be replaced by other patterns in a full-text query. Si el archivo de sinónimos no distingue acentos, la búsqueda de texto completo reemplaza los patrones "café" y "cafe".If the thesaurus is accent-insensitive, full-text search replaces the patterns "café" and "cafe". Si el archivo de sinónimos distingue acentos, la búsqueda de texto completo solo reemplaza el patrón "café".If the thesaurus is accent-sensitive, full-text search replaces only the pattern "café". De forma predeterminada, un diccionario de sinónimos no distingue acentos.By default, a thesaurus is accent-insensitive.

Archivos de sinónimos predeterminadosDefault thesaurus files

SQL ServerSQL Server proporciona un conjunto de archivos de sinónimos XML, uno para cada idioma admitido.provides a set of XML thesaurus files, one for each supported language. Estos archivos están esencialmente vacíos.These files are essentially empty. Contienen solo la estructura XML de nivel superior que es común a todos los diccionarios de sinónimos de SQL ServerSQL Server y un diccionario de sinónimos de ejemplo como comentario.They contain only the top-level XML structure that is common to all SQL ServerSQL Server thesauruses and a commented-out sample thesaurus.

Ubicación de los archivos de sinónimosLocation of thesaurus files

La ubicación predeterminada de los archivos de sinónimos es la siguiente:The default location of the thesaurus files is:

 <SQL_Server_data_files_path>\MSSQL13.MSSQLSERVER\MSSQL\FTDATA\  

Esta ubicación predeterminada contiene los archivos siguientes:This default location contains the following files:

  • Archivos de sinónimos específicos del idiomaLanguage-specific thesaurus files

    El programa de instalación instala los archivos de sinónimos vacíos en la ubicación anterior.Setup installs empty thesaurus files in the above location. Se proporciona un archivo independiente para cada idioma admitido.A separate file is provided for each supported language. Un administrador del sistema puede personalizar estos archivos.A system administrator can customize these files.

    Los nombres de archivo predeterminados de los archivos de sinónimos usan el formato siguiente:The default file names of the thesaurus files use following format:

     'ts' + <three-letter language-abbreviation> + '.xml'  
    

    El nombre del archivo de sinónimos para un idioma determinado se especifica en el valor siguiente en el Registro:The name of the thesaurus file for a given language is specified in the registry in the following value:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<instance-name>\MSSearch\<language-abbrev>  
    
  • El archivo de sinónimos globalThe global thesaurus file

    Un archivo de sinónimos global y vacío, tsGlobal.xml.An empty global thesaurus file, tsGlobal.xml.

Cambiar la ubicación de un archivo de sinónimosChange the location of a thesaurus file

Puede cambiar la ubicación y los nombres de un archivo de sinónimos cambiando su clave del Registro.You can change the location and names of a thesaurus file by changing its registry key. Para cada idioma, la ubicación del archivo de sinónimos se especifica en el valor siguiente en el Registro:For each language, the location of the thesaurus file is specified in the following value in the registry:

HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\<instance name>\MSSearch\Language\<language-abbreviation>\TsaurusFile  

El archivo de sinónimos global corresponde al idioma neutro con el LCID 0.The global thesaurus file corresponds to the Neutral language with LCID 0. Solo los administradores pueden cambiar este valor.This value can be changed by administrators only.

Cómo las consultas de texto completo utilizan el diccionario de sinónimosHow full-text queries use the thesaurus

Una consulta del diccionario de sinónimos utiliza un diccionario de sinónimos específico del idioma y el diccionario de sinónimos global.A thesaurus query uses both a language-specific thesaurus and the global thesaurus.

  1. Primero, la consulta busca el archivo específico del idioma y lo carga para su procesamiento (a menos que ya esté cargado).First, the query looks up the language-specific file and loads it for processing (unless it is already loaded). La consulta se expande para incluir los sinónimos específicos del idioma especificados por las reglas de conjuntos de expansión y conjuntos de reemplazo en el archivo de diccionario de sinónimos.The query is expanded to include the language-specific synonyms specified by the expansion set and replacement set rules in the thesaurus file.
  2. Estos pasos se repiten después para el diccionario de sinónimos global.These steps are then repeated for the global thesaurus. Sin embargo, si un término ya forma parte de una coincidencia en el archivo de diccionario de sinónimos específico del idioma, el término es ilegible para coincidencias en el diccionario de sinónimos global.However, if a term is already part of a match in the language specific thesaurus file, the term is ineligible for matching in the global thesaurus.

Le escuchamos: Si encuentra algo obsoleto o incorrecto en este artículo, como un paso o un ejemplo de código, indíquenoslo.We are listening: If you find something outdated or incorrect in this article, such as a step or a code example, please tell us. Puede hacer clic en el botón Esta página situado en la sección Comentarios en la parte inferior de esta página.You can click the This page button in the Feedback section at the bottom of this page. Leemos todos los elementos de comentarios sobre SQL, normalmente el día siguiente.We read every item of feedback about SQL, typically the next day. Gracias.Thanks.

Estructura de un archivo de sinónimosStructure of a thesaurus file

Cada archivo de sinónimos define un contenedor XML cuyo identificador es Microsoft Search Thesaurus y un comentario, <!-- ... -->, que contiene un diccionario de sinónimos de ejemplo.Each thesaurus file defines an XML container whose ID is Microsoft Search Thesaurus, and a comment, <!-- ... -->, that contains a sample thesaurus. El diccionario de sinónimos se define en un elemento <thesaurus> que contiene ejemplos de los elementos secundarios que definen la configuración de los signos diacríticos, los conjuntos de expansión y los conjuntos de reemplazo.The thesaurus is defined in a <thesaurus> element that contains samples of the child elements that define the diacritics setting, expansion sets, and replacement sets.

Un archivo de sinónimos vacío típico contiene el texto XML siguiente:A typical empty thesaurus file contains the following XML text:

<XML ID="Microsoft Search Thesaurus">  
  
<!--  Commented out  
  
    <thesaurus xmlns="x-schema:tsSchema.xml">  
<diacritics_sensitive>0</diacritics_sensitive>  
        <expansion>  
            <sub>Internet Explorer</sub>  
            <sub>IE</sub>  
            <sub>IE5</sub>  
        </expansion>  
        <replacement>  
            <pat>NT5</pat>  
            <pat>W2K</pat>  
            <sub>Windows 2012</sub>  
        </replacement>  
        <expansion>  
            <sub>run</sub>  
            <sub>jog</sub>  
        </expansion>  
    </thesaurus>  
-->  
</XML>  

Estructura XML de un conjunto de expansiónXML structure of an expansion set

Cada conjunto de expansión está delimitado por un elemento <expansion>.Each expansion set is enclosed within an <expansion> element. Dentro de este elemento, se especifican una o varias sustituciones en un elemento <sub>.Within this element, you specify one or more substitutions in a <sub> element. En el conjunto de expansión, puede especificar un grupo de sustituciones que sean sinónimas.In the expansion set, you can specify a group of substitutions that are synonyms of each other.

Por ejemplo, puede editar la sección de expansión para tratar las sustituciones "writer", "author" y "journalist" como sinónimos.For example, you can edit the expansion section to treat the substitutions "writer", "author", and "journalist" as synonyms. Las consultas de búsqueda de texto completo que contienen coincidencias en una sustitución se expanden para incluir todas las demás sustituciones especificadas en el conjunto de expansión.full-text search queries that contain matches in one substitution are expanded to include all other substitutions specified in the expansion set. Por tanto, en el ejemplo anterior, al emitir una consulta FORMS OF THESAURUS o FREETEXT para la palabra "autor", la búsqueda de texto completo también devuelve resultados que contienen las palabras "escritor" y "periodista".Therefore, in the preceding example, when you issue a FORMS OF THESAURUS or a FREETEXT query for the word "author", full-text search also returns search results containing the words "writer" and "journalist".

Esta es la apariencia que tendrá la sección del conjunto de expansión en el caso del ejemplo anterior:This is what the expansion set section would look like for the above example:

<expansion>  
        <sub>writer</sub>  
        <sub>author</sub>  
        <sub>journalist</sub>  
</expansion>  

Estructura XML de un conjunto de reemplazoXML structure of a replacement set

Cada conjunto de reemplazo está delimitado por un elemento <replacement>.Each replacement set is enclosed within a <replacement> element. Dentro de este elemento, se pueden especificar uno o varios modelos en un elemento <pat> y cero o más sustituciones en elementos <sub>, una por cada sinónimo.Within this element you can specify one or more patterns in a <pat> element and zero or more substitutions in <sub> elements, one per synonym. Puede especificar un patrón para que sea reemplazado por un conjunto de sustitución.You can specify a pattern to be replaced by a substitution set. Los patrones y las sustituciones pueden contener una palabra o una secuencia de palabras.Patterns and substitutions can contain a word, or a sequence of words. Si no se especifica ninguna sustitución para un modelo, se quita el modelo de la consulta del usuario.If there is no substitution specified for a pattern, it has the effect of removing the pattern from the user query.

Por ejemplo, imagine que desea que las consultas de "Win8", el patrón, sean reemplazadas por "Windows Server 2012" o "Windows 8.0", las sustituciones.For example, suppose you want queries for "Win8", the pattern, to be replaced by "Windows Server 2012" or "Windows 8.0", the substitutions. Si ejecuta una búsqueda de texto completo de "Win8", solo devolverá los resultados que contengan "Windows Server 2012" o "Windows 8.0".If you run a full-text query for "Win8", full-text search only returns search results containing "Windows Server 2012" or "Windows 8.0". No devolverá resultados que contengan "Win8".It does not return results containing "Win8". Esto se debe a que el patrón "Win8" ha sido "reemplazado" por los patrones "Windows Server 2012" y "Windows 8.0".This is because the pattern "Win8" has been "replaced" by the patterns "Windows Server 2012" and "Windows 8.0".

Éste es el aspecto que tendrá la sección del conjunto de reemplazo en el caso del ejemplo anterior:This is what the replacement set section would look like for the above example:

<replacement>  
        <pat>Win8</pat>  
        <sub>Windows Server 2012</sub>  
        <sub>Windows 8.0</sub>  
</replacement>  

Si tiene dos conjuntos de reemplazo con patrones similares para los que se buscan coincidencias, prevalecerá el más largo de los dos.If you have two replacement sets with similar patterns being matched, the longer of the two takes precedence. Por ejemplo, si ejecuta una consulta FORMS OF THESAURUS para "Comunidad en línea de Internet Explorer" y tiene los siguientes conjuntos de reemplazo, el conjunto de reemplazo "Internet Explorer" tiene prioridad sobre el conjunto de reemplazo "Internet".For example, if you run a FORMS OF THESAURUS query for "Internet Explorer online community" and you have the following replacement sets, the "Internet Explorer" replacement set takes precedence over the "Internet" replacement set. Por tanto, la consulta se procesará como "Comunidad en línea de IE" o "Comunidad en línea de IE 9".The query will therefore be processed as "IE online community" or "IE 9 online community".

<replacement>  
         <pat>Internet</pat>  
         <sub>intranet</sub>  
</replacement>  

yand

<replacement>  
         <pat>Internet Explorer</pat>  
         <sub>IE</sub>  
         <sub>IE 9</sub>  
</replacement>  

Estructura XML de la configuración de signos diacríticosXML structure of the diacritics setting

La configuración de signos diacríticos de un diccionario de sinónimos se especifica en un único elemento <diacritics_sensitive>.The diacritics setting of a thesaurus is specified in a single <diacritics_sensitive> element. Este elemento contiene un valor entero que controla la distinción de acentos, de la forma siguiente:This element contains an integer value that controls accent sensitivity, as follows:

Configuración de signos diacríticosDiacritics Setting ValorValue XMLXML
no distinguen acentosAccent insensitive 00 <diacritics_sensitive>0</diacritics_sensitive>
distinguen acentosAccent sensitive 11 <diacritics_sensitive>1</diacritics_sensitive>

Nota

Esta configuración solo se puede aplicar una vez en el archivo, y se aplica a todos los patrones de búsqueda del mismo.This setting can only be applied one time in the file, and it applies to all search patterns in the file. Esta configuración no se puede especificar para patrones individuales.This setting cannot be specified for individual patterns.

Editar un archivo de sinónimosEdit a thesaurus file

Puede configurar el diccionario de sinónimos de un idioma determinado editando su archivo de diccionario de sinónimos (un archivo XML).You can configure the thesaurus for a given language by editing its thesaurus file (an XML file). Durante la instalación, se instalan archivos de diccionarios de sinónimos vacíos que solo contienen el contenedor <xml> y un elemento <thesaurus> de ejemplo comentado.During setup, empty thesaurus files that contain only the <xml> container and a commented-out sample <thesaurus> element are installed. Para que las consultas de búsqueda de texto completo que buscan sinónimos funcionen correctamente, tiene que crear un elemento <thesaurus> real que defina un conjunto de sinónimos.In order for full-text search queries that look for synonyms to work properly, you have to create an actual <thesaurus> element that defines a set of synonyms. Puede definir dos formatos de sinónimos: conjuntos de expansión y conjuntos de reemplazo.You can define two forms of synonyms, expansion sets and replacement sets.

Editar un archivo de sinónimosEdit a thesaurus file

  1. Abra el archivo de sinónimos en el Bloc de notas o en otro editor de texto.Open the thesaurus file in Notepad or another text editor.

  2. Si va a modificar el archivo de sinónimos por primera vez, quite las siguientes líneas de comentarios del principio y el final del archivo, respectivamente:If you are editing the thesaurus file for the first time, remove the following comment lines at the beginning and end of the file, respectively:

    <!--Commented out  
    -->  
    
  3. Agregue, modifique o elimine un conjunto de reemplazo o un conjunto de expansión.Add, modify, or delete a replacement set or an expansion set.

  4. Guarde el archivo y cierre el Bloc de notas.Save the file and close Notepad.

  5. Use sp_fulltext_load_thesaurus_file para cargar el contenido del archivo de diccionario de sinónimos en tempdb, especificando el identificador local (LCID) que corresponde al idioma del archivo de diccionario de sinónimos.Use sp_fulltext_load_thesaurus_file to load the content of the thesaurus file into tempdb, specifying the local identifier (LCID) that corresponds to the language of the thesaurus file. Por ejemplo, para el archivo de diccionario de sinónimos en inglés, tsenu.xml, el LCID correspondiente es 1033.For example, for the English thesaurus file, tsenu.xml, the corresponding LCID is 1033.

    USE AdventureWorks;  
    EXEC sys.sp_fulltext_load_thesaurus_file 1033;  
    GO
    

Recomendaciones para editar los archivos de sinónimosRecommendations for editing thesaurus files

Se recomienda que las entradas del archivo de diccionario de sinónimos no contengan ningún carácter especial.We recommend that entries in the thesaurus file contain no special characters. Esto se debe a que los separadores de palabras demuestran comportamientos sutiles con respecto a los caracteres especiales.This is because word breakers have subtle behaviors with respect to special characters. Si una entrada del diccionario de sinónimos contiene algún carácter especial, los separadores de palabras que se usan en combinación con esa entrada pueden tener implicaciones sutiles de comportamiento en una consulta de texto completo.If a thesaurus entry contains any special characters, word breakers used in combination with that entry can have subtle behavioral implications for a full-text query.

Se recomienda que las entradas <sub> no contengan palabras irrelevantes porque estas se omiten en el índice de texto completo.We recommend that <sub> entries contain no stopwords since stopwords are omitted from the full-text index. Las consultas se expanden para incluir las entradas <sub> de un archivo de diccionario de sinónimos y, si una entrada <sub> contiene palabras irrelevantes, el tamaño de la consulta aumenta innecesariamente.Queries are expanded to include the <sub> entries from a thesaurus file, and if a <sub> entry contains stopwords, query size increases unnecessarily.

Restricciones para editar los archivos de sinónimosRestrictions for editing thesaurus files

Las restricciones siguientes se aplican al modificar un archivo de diccionario de sinónimos:The following restrictions apply to editing a thesaurus file:

  • Solo los administradores del sistema pueden actualizar, modificar o eliminar archivos de diccionarios de sinónimos.Only system administrators can update, modify, or delete thesaurus files.

  • Al modificar archivos de diccionarios de sinónimos con herramientas de edición de texto, los archivos deben guardarse en formato Unicode y deben especificarse marcas de orden de bytes.When editing thesaurus files using text editor tools, the files must be saved in Unicode format, and Byte Order Marks must be specified.

  • Las entradas del diccionario de sinónimos no pueden estar vacías ni tener separación de palabras en una cadena vacía.Thesaurus entries cannot be empty or word break to an empty string.

  • Las frases del archivo de diccionario de sinónimos no deben tener más de 512 caracteres.Phrases in the thesaurus file must be no longer than 512 characters.

  • Un diccionario de sinónimos no debe contener ninguna entrada duplicada entre las entradas <sub> de los conjuntos de expansión y los elementos <pat> de los conjuntos de reemplazo.A thesaurus must not contain any duplicate entries among the <sub> entries of expansion sets and the <pat> elements of replacement sets.

Consulte tambiénSee Also

CONTAINS (Transact-SQL) CONTAINS (Transact-SQL)
CONTAINSTABLE (Transact-SQL) CONTAINSTABLE (Transact-SQL)
FREETEXT (Transact-SQL) FREETEXT (Transact-SQL)
FREETEXTTABLE (Transact-SQL) FREETEXTTABLE (Transact-SQL)
sp_fulltext_load_thesaurus_file (Transact-SQL)sp_fulltext_load_thesaurus_file (Transact-SQL)
sys.dm_fts_parser (Transact-SQL)sys.dm_fts_parser (Transact-SQL)