Configurer et gérer les fichiers de dictionnaire des synonymes pour la recherche en texte intégralConfigure and Manage Thesaurus Files for Full-Text Search

S’applique à :Applies to: ouiSQL ServerSQL Server (toutes les versions prises en charge) yesSQL ServerSQL Server (all supported versions) S’applique à :Applies to: ouiSQL ServerSQL Server (toutes les versions prises en charge) yesSQL ServerSQL Server (all supported versions)

SQL ServerSQL Server Les requêtes de recherche en texte intégral peuvent rechercher des synonymes des termes spécifiés par l’utilisateur grâce à un dictionnaire des synonymes pour la recherche en texte intégral.Full-Text Search queries can search for synonyms of user-specified terms through the use of a Full-Text Search thesaurus. Chaque dictionnaire des synonymes définit un jeu de synonymes pour une langue spécifique.Each thesaurus defines a set of synonyms for a specific language. En développant un dictionnaire des synonymes adapté à vos données de texte intégral, vous pouvez élargir efficacement l'étendue des requêtes de texte intégral sur ces données.By developing a thesaurus tailored to your full-text data, you can effectively broaden the scope of full-text queries on that data.

La mise en correspondance avec le dictionnaire des synonymes intervient pour toutes les requêtes FREETEXT et FREETEXTABLE et pour toutes les requêtes CONTAINS et CONTAINSTABLE qui spécifient la clause 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 dictionnaire des synonymes pour la recherche en texte intégral est un fichier texte XML.A Full-Text Search thesaurus is an XML text file.

Contenu d’un dictionnaire des synonymesWhat's in a thesaurus

Pour que vos requêtes de recherche en texte intégral puissent rechercher des synonymes dans une langue donnée, vous devez au préalable définir des mappages de dictionnaire des synonymes (c’est-à-dire des synonymes) pour cette langue.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. Chaque dictionnaire des synonymes doit être configuré manuellement de façon à définir les éléments suivants :Each thesaurus must be manually configured to define the following:

  • Jeu d'expansionExpansion set

    Un jeu d'expansion contient un groupe de synonymes, tels que « writer », « author » et « journalist », qui sont substitués les uns aux autres par une requête de texte intégral.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. Les requêtes qui contiennent une correspondance pour un synonyme dans un jeu d'expansion sont développées de manière à inclure tous les autres synonymes du jeu d'expansion.Queries that contain a match for any synonym in an expansion set are expanded to include every other synonym in the expansion set.

    Pour plus d’informations, consultez Structure XML d’un jeu d’expansion, plus loin dans cette rubrique.For more information, see XML Structure of an Expansion Set later in this topic.

  • Jeu de remplacementReplacement set

    Un jeu de remplacement contient un modèle de texte à remplacer par un jeu de substitution.A replacement set contains a text pattern to be replaced by a substitution set. Reportez-vous à l’exemple de la section Structure XML d’un jeu de remplacement, plus loin dans cette rubrique.For an example, see the section XML Structure of a Replacement Set later in this topic.

  • Paramètre de signes diacritiquesDiacritics setting

    Pour un dictionnaire des synonymes donné, tous les modèles de recherche respectent ou non les signes diacritiques, par exemple le tilde ( ~ ), l’accent aigu ( ´ ) ou le tréma ( ¨ ), (autrement dit ils respectent les accents ou ne respectent pas les accents).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). Par exemple, supposez que vous spécifiez le remplacement du modèle « café » par d'autres modèles dans une requête de texte intégral.For example, suppose you specify the pattern "café" to be replaced by other patterns in a full-text query. Si le dictionnaire des synonymes ne tient pas compte des accents, la recherche en texte intégral remplace les modèles « café » et « cafe ».If the thesaurus is accent-insensitive, full-text search replaces the patterns "café" and "cafe". Si le dictionnaire des synonymes respecte les accents, la recherche en texte intégral remplace seulement le modèle « café ».If the thesaurus is accent-sensitive, full-text search replaces only the pattern "café". Par défaut, un dictionnaire des synonymes ne tient pas compte des accents.By default, a thesaurus is accent-insensitive.

Fichiers par défaut du dictionnaire des synonymesDefault thesaurus files

SQL ServerSQL Server fournit un fichier de dictionnaire des synonymes XML par langue prise en charge.provides a set of XML thesaurus files, one for each supported language. Ces fichiers sont essentiellement vides.These files are essentially empty. Ils contiennent uniquement la structure XML de niveau supérieur commune à tous les dictionnaires des synonymes SQL ServerSQL Server et un exemple commenté de dictionnaire des synonymes.They contain only the top-level XML structure that is common to all SQL ServerSQL Server thesauruses and a commented-out sample thesaurus.

Emplacement des fichiers de dictionnaire des synonymesLocation of thesaurus files

L'emplacement par défaut des fichiers de dictionnaires des synonymes est :The default location of the thesaurus files is:

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

Cet emplacement par défaut contient les fichiers suivants :This default location contains the following files:

  • Fichiers de dictionnaire des synonymes spécifiques à la langueLanguage-specific thesaurus files

    Le programme d’installation installe les fichiers vides de dictionnaire des synonymes dans l’emplacement ci-dessus.Setup installs empty thesaurus files in the above location. Un fichier distinct est fourni pour chaque langue prise en charge.A separate file is provided for each supported language. Ces fichiers peuvent être personnalisés par un administrateur système.A system administrator can customize these files.

    Les noms de fichier par défaut des fichiers des dictionnaires des synonymes utilisent le format suivant :The default file names of the thesaurus files use following format:

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

    Le nom du fichier de dictionnaire des synonymes est spécifié pour une langue donnée dans la valeur de Registre suivante :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>

  • Fichier global de dictionnaire des synonymesThe global thesaurus file

    Un fichier de dictionnaire des synonymes global vide, tsGlobal.xml.An empty global thesaurus file, tsGlobal.xml.

Changer l’emplacement d’un fichier de dictionnaire des synonymesChange the location of a thesaurus file

Vous pouvez modifier l'emplacement et le nom d'un fichier de dictionnaire des synonymes en modifiant sa clé de Registre.You can change the location and names of a thesaurus file by changing its registry key. Pour chaque langue, l'emplacement du fichier de dictionnaire des synonymes est spécifié dans la valeur de Registre suivante :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

Le fichier du dictionnaire des synonymes global correspond à la langue « neutre », avec le LCID 0.The global thesaurus file corresponds to the Neutral language with LCID 0. Cette valeur ne peut être modifiée que par des administrateurs.This value can be changed by administrators only.

Utilisation du dictionnaire des synonymes par des requêtes de texte intégralHow full-text queries use the thesaurus

Une requête de dictionnaire des synonymes utilise à la fois le dictionnaire des synonymes spécifique à la langue et le dictionnaire des synonymes global.A thesaurus query uses both a language-specific thesaurus and the global thesaurus.

  1. En premier lieu, la requête recherche le fichier spécifique à la langue et le charge en vue du traitement (à moins qu'il ne soit déjà chargé).First, the query looks up the language-specific file and loads it for processing (unless it is already loaded). La requête est développée pour inclure les synonymes spécifiques à la langue spécifiés par les règles de jeu d'expansion et de jeu de remplacement définies dans le fichier du dictionnaire des synonymes.The query is expanded to include the language-specific synonyms specified by the expansion set and replacement set rules in the thesaurus file.
  2. Ces étapes sont ensuite répétées pour le dictionnaire des synonymes global.These steps are then repeated for the global thesaurus. Toutefois, si un terme fait déjà partie d'une correspondance dans le fichier du dictionnaire des synonymes spécifique à la langue, ce terme est inéligible pour la mise en correspondance dans le dictionnaire des synonymes 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.

Structure d’un fichier de dictionnaire des synonymesStructure of a thesaurus file

Chaque fichier de dictionnaire des synonymes définit un conteneur XML dont l’ID est Microsoft Search Thesaurus et un commentaire, <!-- ... -->, qui contient un exemple de dictionnaire des synonymes.Each thesaurus file defines an XML container whose ID is Microsoft Search Thesaurus, and a comment, <!-- ... -->, that contains a sample thesaurus. Le dictionnaire des synonymes est défini dans un élément <thesaurus> qui contient des exemples des éléments enfants qui définissent le paramètre de signes diacritiques, les jeux d’expansion et les jeux de remplacement.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 fichier de dictionnaire des synonymes vide standard contient le texte XML suivant :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>  

XML structure of an expansion setXML structure of an expansion set

Chaque jeu d’expansion est compris dans un élément <expansion>.Each expansion set is enclosed within an <expansion> element. Dans cet élément, vous spécifiez une ou plusieurs substitutions dans un élément <sub>.Within this element, you specify one or more substitutions in a <sub> element. Dans le jeu d'expansion, vous pouvez spécifier un groupe de substitutions synonymes les unes des autres.In the expansion set, you can specify a group of substitutions that are synonyms of each other.

Par exemple, vous pouvez modifier la section expansion pour traiter les substitutions « writer », « author » et « journalist » en tant que synonymes.For example, you can edit the expansion section to treat the substitutions "writer", "author", and "journalist" as synonyms. Les requêtes de recherche en texte intégral contenant des correspondances dans une substitution sont étendues pour inclure toutes les autres substitutions spécifiées dans le jeu d'expansion.full-text search queries that contain matches in one substitution are expanded to include all other substitutions specified in the expansion set. Par conséquent, dans l'exemple précédent, lorsque vous émettez une requête FORMS OF THESAURUS ou FREETEXT pour le mot « author », la recherche en texte intégral renvoie également les résultats contenant les mots « writer » et « journalist ».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".

Voici à quoi ressemble la section du jeu d'expansion pour l'exemple ci-dessus :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>  

XML structure of a replacement setXML structure of a replacement set

Chaque jeu de remplacement est compris dans un élément <replacement>.Each replacement set is enclosed within a <replacement> element. Dans cet élément, vous pouvez spécifier un ou plusieurs modèles dans un élément <pat> et zéro, une ou plusieurs substitutions dans des éléments <sub>, à raison d’un par synonyme.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. Vous pouvez spécifier un modèle de texte à remplacer par un jeu de substitution.You can specify a pattern to be replaced by a substitution set. Les modèles et les substitutions peuvent contenir un mot ou une suite de mots.Patterns and substitutions can contain a word, or a sequence of words. L'absence de spécification d'une substitution pour un modèle a pour effet de supprimer le modèle de la requête de l'utilisateur.If there is no substitution specified for a pattern, it has the effect of removing the pattern from the user query.

Par exemple, supposons que vous souhaitez remplacer les requêtes pour le motif « Win8 » par les substitutions « Windows Server 2012 » ou « Windows 8.0 ».For example, suppose you want queries for "Win8", the pattern, to be replaced by "Windows Server 2012" or "Windows 8.0", the substitutions. Si vous exécutez une requête de texte intégral pour « Win8 », la recherche en texte intégral renvoie seulement les résultats contenant « Windows Server 2012 » ou « 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". Elle ne renvoie pas les résultats contenant « Win8 ».It does not return results containing "Win8". Cela est dû au fait que le motif « Win8 » a été « remplacé » par les motifs « Windows Server 2012 » et « Windows 8.0 ».This is because the pattern "Win8" has been "replaced" by the patterns "Windows Server 2012" and "Windows 8.0".

Voici à quoi ressemble la section du jeu de remplacement pour l'exemple ci-dessus :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 deux jeux de remplacement contiennent des motifs similaires en correspondance, le plus long des deux a priorité.If you have two replacement sets with similar patterns being matched, the longer of the two takes precedence. Par exemple, si vous exécutez une requête FORMS OF THESAURUS pour « Internet Explorer online community » avec les jeux de remplacement suivants, le jeu de remplacement « Internet Explorer » est prioritaire par rapport au jeu de remplacement « 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. La requête sera donc traitée comme « IE online community » ou « IE 9 online community ».The query will therefore be processed as "IE online community" or "IE 9 online community".

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

andand

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

Structure XML du paramètre de signes diacritiquesXML structure of the diacritics setting

Le paramètre de signes diacritiques d’un dictionnaire des synonymes est spécifié dans un élément <diacritics_sensitive> unique.The diacritics setting of a thesaurus is specified in a single <diacritics_sensitive> element. Cet élément contient une valeur entière qui contrôle le respect des accents, comme suit :This element contains an integer value that controls accent sensitivity, as follows:

Paramètre de signes diacritiquesDiacritics Setting ValueValue XMLXML
ne respectent pas les accentsAccent insensitive 00 <diacritics_sensitive>0</diacritics_sensitive>
respectent les accentsAccent sensitive 11 <diacritics_sensitive>1</diacritics_sensitive>

Notes

Ce paramètre ne peut être appliqué qu'une seule fois dans le fichier et s'applique à tous les modèles de recherche au sein du fichier.This setting can only be applied one time in the file, and it applies to all search patterns in the file. Vous ne pouvez pas définir ce paramètre pour des modèles individuels.This setting cannot be specified for individual patterns.

Modifier un fichier de dictionnaire des synonymesEdit a thesaurus file

Vous pouvez configurer le dictionnaire des synonymes d’une langue donnée en modifiant son fichier de dictionnaire des synonymes (fichier XML).You can configure the thesaurus for a given language by editing its thesaurus file (an XML file). Pendant l’installation, des fichiers de dictionnaire des synonymes vides comportant uniquement le conteneur <xml> et un exemple commenté d’élément <thesaurus> sont installés.During setup, empty thesaurus files that contain only the <xml> container and a commented-out sample <thesaurus> element are installed. Pour que les requêtes de recherche en texte intégral qui recherchent des synonymes fonctionnent correctement, vous devez créer un élément <thesaurus> réel qui définisse un jeu de synonymes.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. Vous pouvez définir deux formes de synonymes : les jeux d'expansion et les jeux de remplacement.You can define two forms of synonyms, expansion sets and replacement sets.

Modifier un fichier de dictionnaire des synonymesEdit a thesaurus file

  1. Ouvrez le fichier de dictionnaire des synonymes dans le Bloc-notes ou dans un autre éditeur de texte.Open the thesaurus file in Notepad or another text editor.

  2. Si vous modifiez le fichier de dictionnaire des synonymes pour la première fois, supprimez les lignes de commentaires suivantes au début et à la fin du fichier :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. Ajoutez, modifiez ou supprimez un jeu de remplacement ou un jeu d’expansion.Add, modify, or delete a replacement set or an expansion set.

  4. Enregistrez le fichier et fermez le Bloc-notes.Save the file and close Notepad.

  5. Utilisez sp_fulltext_load_thesaurus_file pour charger le contenu du fichier du dictionnaire des synonymes dans tempdb, en spécifiant l’identificateur de paramètres régionaux (LCID) qui correspond à la langue du fichier.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. Par exemple, pour le fichier du dictionnaire des synonymes anglais, tsenu.xml, le LCID correspondant est 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
    

Recommandations pour la modification de fichiers de dictionnaire des synonymesRecommendations for editing thesaurus files

Nous vous recommandons de ne pas utiliser de caractères spéciaux dans les entrées d'un fichier de dictionnaire des synonymes.We recommend that entries in the thesaurus file contain no special characters. En effet, le comportement des analyseurs lexicaux en ce qui concerne les caractères spéciaux est particulier.This is because word breakers have subtle behaviors with respect to special characters. Si une entrée de dictionnaire des synonymes contient des caractères spéciaux, les analyseurs lexicaux utilisés en association avec cette entrée peuvent avoir des conséquences comportementales subtiles pour une requête de texte intégral.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.

Nous vous recommandons de ne pas utiliser de mots vides dans les entrées <sub>, car les mots vides sont omis de l’index de recherche en texte intégral.We recommend that <sub> entries contain no stopwords since stopwords are omitted from the full-text index. Les requêtes sont élargies de façon à inclure les entrées <sub> d’un fichier de dictionnaire des synonymes et, si une entrée <sub> contient des mots vides, la taille de la requête augmente inutilement.Queries are expanded to include the <sub> entries from a thesaurus file, and if a <sub> entry contains stopwords, query size increases unnecessarily.

Restrictions pour la modification de fichiers de dictionnaire des synonymesRestrictions for editing thesaurus files

Les restrictions suivantes s'appliquent à la modification d'un fichier de dictionnaire des synonymes :The following restrictions apply to editing a thesaurus file:

  • Seuls des administrateurs système peuvent mettre à jour, modifier ou supprimer des fichiers de dictionnaire des synonymes.Only system administrators can update, modify, or delete thesaurus files.

  • Lorsque vous modifiez des fichiers de dictionnaire des synonymes à l'aide des outils d'édition de texte, les fichiers doivent être enregistrés au format Unicode et des marques d'ordre d'octets doivent être spécifiées.When editing thesaurus files using text editor tools, the files must be saved in Unicode format, and Byte Order Marks must be specified.

  • Les entrées du dictionnaire des synonymes ne doivent pas être vides et la césure des mots ne doit pas résulter en une chaîne vide.Thesaurus entries cannot be empty or word break to an empty string.

  • Les expressions du fichier de dictionnaire des synonymes ne doivent pas dépasser 512 caractères.Phrases in the thesaurus file must be no longer than 512 characters.

  • Un dictionnaire des synonymes ne doit pas contenir d’entrées en double parmi les entrées <sub> des jeux d’expansion et les éléments <pat> des jeux de remplacement.A thesaurus must not contain any duplicate entries among the <sub> entries of expansion sets and the <pat> elements of replacement sets.

Voir aussiSee 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)