Konfigurieren und Verwalten von Thesaurusdateien für die VolltextsucheConfigure and Manage Thesaurus Files for Full-Text Search

Gilt für: JaSQL Server NeinAzure SQL-Datenbank NeinAzure Synapse Analytics (SQL DW) NeinParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Bei SQL ServerSQL Server-Volltextabfragen kann ein Thesaurus der Volltextsuche verwendet werden, um nach Synonymen der vom Benutzer angegebenen Begriffe zu suchen.SQL ServerSQL Server Full-Text Search queries can search for synonyms of user-specified terms through the use of a Full-Text Search thesaurus. Jeder Thesaurus definiert Synonyme für eine bestimmte Sprache.Each thesaurus defines a set of synonyms for a specific language. Indem Sie einen Thesaurus entwickeln, der genau auf Ihre Volltextdaten abgestimmt ist, können Sie den Bereich der Volltextabfragen für diese Daten effektiv erweitern.By developing a thesaurus tailored to your full-text data, you can effectively broaden the scope of full-text queries on that data.

Der Thesaurusvergleich erfolgt für alle FREETEXT- und FREETEXTABLE-Abfragen sowie für alle CONTAINS- und CONTAINSTABLE-Abfragen, in denen die FORMSOF THESAURUS-Klausel angegeben ist.Thesaurus matching occurs for all FREETEXT and FREETEXTABLE queries and for any CONTAINS and CONTAINSTABLE queries that specify the FORMSOF THESAURUS clause.

Ein Thesaurus der Volltextsuche ist eine XML-Textdatei.A Full-Text Search thesaurus is an XML text file.

In Thesaurus enthaltene FunktionenWhat's in a thesaurus

Bevor bei Volltextsuchabfragen nach Synonymen in einer bestimmten Sprache gesucht werden kann, müssen Sie Thesauruszuordnungen (Synonyme) für diese Sprache definieren.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. Jeder Thesaurus muss manuell konfiguriert werden, um Folgendes zu definieren:Each thesaurus must be manually configured to define the following:

  • ErweiterungssatzExpansion set

    Ein Erweiterungssatz enthält eine Gruppe von Synonymen wie "writer", "author" und "journalist", die bei einer Volltextabfrage ausgetauscht werden.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. Abfragen, die eine Übereinstimmung für ein beliebiges Synonym in einem Erweiterungssatz enthalten, werden erweitert, um jedes andere Synonym im Erweiterungssatz einzubeziehen.Queries that contain a match for any synonym in an expansion set are expanded to include every other synonym in the expansion set.

    Weitere Informationen finden Sie unter XML-Struktur eines Erweiterungssatzes weiter unten in diesem Thema.For more information, see XML Structure of an Expansion Set later in this topic.

  • ErsetzungssatzReplacement set

    Ein Ersetzungssatz enthält ein durch einen Substitutionssatz zu ersetzendes Textmuster.A replacement set contains a text pattern to be replaced by a substitution set. Ein Beispiel dafür finden Sie im Abschnitt XML-Struktur eines Ersetzungssatzes weiter unten in diesem Thema.For an example, see the section XML Structure of a Replacement Set later in this topic.

  • Einstellung für diakritische ZeichenDiacritics setting

    Bei einem Thesaurus werden bei allen Suchmustern diakritische Zeichen – beispielsweise Tilde ( ~ ), Akut-Akzentzeichen ( ´ ) oder Umlaut ( ¨ ) – entweder berücksichtigt oder nicht berücksichtigt (d.h., es erfolgt eine Unterscheidung nach Akzent, oder es erfolgt keine Unterscheidung nach Akzent).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). Angenommen, Sie haben in einer Volltextsuchabfrage angegeben, dass das Suchmuster „café“ durch ein anderes Muster ersetzt werden soll.For example, suppose you specify the pattern "café" to be replaced by other patterns in a full-text query. Wenn im Thesaurus nicht nach Akzent unterschieden wird, ersetzt die Volltextsuche die Muster „café“ und „cafe“.If the thesaurus is accent-insensitive, full-text search replaces the patterns "café" and "cafe". Wenn im Thesaurus nach Akzent unterschieden wird, ersetzt die Volltextsuche nur das Muster „café“.If the thesaurus is accent-sensitive, full-text search replaces only the pattern "café". Standardmäßig wird bei einem Thesaurus nicht nach Akzent unterschieden.By default, a thesaurus is accent-insensitive.

Thesaurus-StandarddateienDefault thesaurus files

SQL ServerSQL Server stellt einen Satz von XML-Thesaurusdateien bereit, und zwar eine für jede unterstützte Sprache.provides a set of XML thesaurus files, one for each supported language. Diese Dateien sind im Wesentlichen leer.These files are essentially empty. Sie enthalten nur die XML-Hauptstruktur, die alle SQL ServerSQL Server -Thesaurusdateien aufweisen, sowie einen auskommentierten Beispielthesaurus.They contain only the top-level XML structure that is common to all SQL ServerSQL Server thesauruses and a commented-out sample thesaurus.

Speicherort der ThesaurusdateienLocation of thesaurus files

Der Standardspeicherort der Thesaurusdateien lautet folgendermaßen:The default location of the thesaurus files is:

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

Dieser Standardspeicherort enthält die folgenden Dateien:This default location contains the following files:

  • Sprachspezifische ThesaurusdateienLanguage-specific thesaurus files

    Beim Setup werden am oben genannten Speicherort leere Thesaurusdateien installiert.Setup installs empty thesaurus files in the above location. Für jede unterstützte Sprache wird eine separate Datei bereitgestellt.A separate file is provided for each supported language. Ein Systemadministrator kann diese Dateien anpassen.A system administrator can customize these files.

    Die Standarddateinamen der Thesaurusdateien haben das folgende Format:The default file names of the thesaurus files use following format:

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

    Der Name einer Thesaurusdatei für eine bestimmte Sprache ist in der Registrierung im folgenden Wert angegeben: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>  
    
  • Die globale ThesaurusdateiThe global thesaurus file

    Eine leere globale Thesaurusdatei mit dem Namen „tsGlobal.xml“.An empty global thesaurus file, tsGlobal.xml.

Ändern des Speicherorts einer ThesaurusdateiChange the location of a thesaurus file

Sie können den Speicherort und den Namen einer Thesaurusdatei ändern, indem Sie den zugehörigen Registrierungsschlüssel ändern.You can change the location and names of a thesaurus file by changing its registry key. Der Speicherort der Thesaurusdatei für jede einzelne Sprache ist im folgenden Wert in der Registrierung angegeben: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  

Die globale Thesaurusdatei entspricht der neutralen Sprache mit LCID 0.The global thesaurus file corresponds to the Neutral language with LCID 0. Dieser Wert kann nur von Administratoren geändert werden.This value can be changed by administrators only.

Verwenden des Thesaurus durch VolltextabfragenHow full-text queries use the thesaurus

Für jede Thesaurusabfrage wird zuerst ein sprachspezifischer Thesaurus und dann der globale Thesaurus verwendet.A thesaurus query uses both a language-specific thesaurus and the global thesaurus.

  1. Zuerst wird die sprachspezifische Datei gesucht und (falls erforderlich) zur Verarbeitung geladen.First, the query looks up the language-specific file and loads it for processing (unless it is already loaded). Die Abfrage wird um die durch die Erweiterungssatz- und Ersetzungssatz-Regeln in der Thesaurusdatei angegebenen Synonyme erweitert.The query is expanded to include the language-specific synonyms specified by the expansion set and replacement set rules in the thesaurus file.
  2. Anschließend werden diese Schritte für den globalen Thesaurus wiederholt.These steps are then repeated for the global thesaurus. Wenn für einen Begriff in der sprachspezifischen Thesaurusdatei bereits eine Übereinstimmung gefunden wurde, werden die globalen Synonyme des Begriffs ignoriert.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.

Struktur einer ThesaurusdateiStructure of a thesaurus file

Jede Thesaurusdatei definiert einen XML-Container, dessen ID Microsoft Search Thesaurus lautet, sowie einen Kommentar, <!---->, der einen Beispielthesaurus enthält.Each thesaurus file defines an XML container whose ID is Microsoft Search Thesaurus, and a comment, <!-- ... -->, that contains a sample thesaurus. Der Thesaurus wird in einem <thesaurus>-Element definiert, das Beispiele für die untergeordneten Elemente enthält, in denen die Einstellung für diakritische Zeichen, Erweiterungssätze und Ersetzungssätze definiert werden.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.

Eine typische leere Thesaurusdatei enthält den folgenden XML-Text: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-Struktur eines ErweiterungssatzesXML structure of an expansion set

Jeder Erweiterungssatz ist in ein <expansion>-Element eingeschlossen.Each expansion set is enclosed within an <expansion> element. Innerhalb dieses Elements geben Sie eine oder mehrere Substitutionen in einem <sub>-Element an.Within this element, you specify one or more substitutions in a <sub> element. Im Erweiterungssatz können Sie eine Gruppe von Substitutionen angeben, die Synonyme zueinander sind.In the expansion set, you can specify a group of substitutions that are synonyms of each other.

Sie können beispielsweise den expansion-Abschnitt bearbeiten, um die Substitutionen "writer", "author" und "journalist" als Synonyme zu behandeln.For example, you can edit the expansion section to treat the substitutions "writer", "author", and "journalist" as synonyms. Volltextsuchabfragen, die Übereinstimmungen in einer Substitution enthalten, werden erweitert, um alle weiteren im Erweiterungssatz angegebenen Substitutionen einzubeziehen.full-text search queries that contain matches in one substitution are expanded to include all other substitutions specified in the expansion set. Wenn Sie daher im vorherigen Beispiel eine FORMS OF THESAURUS- oder eine FREETEXT-Abfrage nach dem Wort "author" ausführen, gibt die Volltextsuche auch Suchergebnisse zurück, die die Wörter "writer" und "journalist" enthalten.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".

Der Erweiterungssatzabschnitt für das oben genannte Beispiel würde wie folgt aussehen: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-Struktur eines ErsetzungssatzesXML structure of a replacement set

Jeder Ersetzungssatz ist in ein <replacement>-Element eingeschlossen.Each replacement set is enclosed within a <replacement> element. Innerhalb dieses Elements können Sie ein oder mehrere Muster in einem <pat>-Element und keine oder beliebig viele Substitutionen in <sub>-Elementen (einem pro Synonym) angeben.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. Sie können ein durch einen Substitutionssatz zu ersetzendes Muster angeben.You can specify a pattern to be replaced by a substitution set. Muster und Substitutionen können ein Wort oder eine Wortfolge enthalten.Patterns and substitutions can contain a word, or a sequence of words. Wenn für ein Muster keine Substitution angegeben wird, ist die Wirkung dieselbe, als würde das Muster aus der Benutzerabfrage entfernt.If there is no substitution specified for a pattern, it has the effect of removing the pattern from the user query.

Angenommen, Sie möchten, dass Abfragen nach "Win8" (das Muster) durch "Windows Server 2012" oder "Windows 8.0" (die Substitutionen) ersetzt werden.For example, suppose you want queries for "Win8", the pattern, to be replaced by "Windows Server 2012" or "Windows 8.0", the substitutions. Wenn Sie eine Volltextabfrage nach "Win8" ausführen, gibt die Volltextsuche nur Suchergebnisse zurück, die "Windows Server 2012" oder "Windows 8.0" enthalten.If you run a full-text query for "Win8", full-text search only returns search results containing "Windows Server 2012" or "Windows 8.0". Sie gibt keine Ergebnisse zurück, die "Win8" enthalten.It does not return results containing "Win8". Dies liegt daran, dass das Muster "Win8" durch die Muster "Windows Server 2012" und "Windows 8.0" "ersetzt" wurde.This is because the pattern "Win8" has been "replaced" by the patterns "Windows Server 2012" and "Windows 8.0".

Der Ersetzungssatzabschnitt für das oben genannte Beispiel würde wie folgt aussehen: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>  

Wenn zwei Ersetzungssätze mit ähnlichen Mustern für die Übereinstimmung verwendet werden, hat der längere der beiden Vorrang.If you have two replacement sets with similar patterns being matched, the longer of the two takes precedence. Wenn Sie beispielsweise eine FORMS OF THESAURUS-Abfrage nach "Internet Explorer online community" ausführen und die folgenden Ersetzungssätze haben, hat der "Internet Explorer"-Ersetzungssatz Vorrang vor dem "Internet"-Ersetzungssatz.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. Die Abfrage wird demzufolge als "IE online community" oder "IE 9 online community" verarbeitet.The query will therefore be processed as "IE online community" or "IE 9 online community".

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

- undand

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

XML-Struktur der Einstellung für diakritische ZeichenXML structure of the diacritics setting

Die Einstellung eines Thesaurus für diakritische Zeichen wird in einem einzelnen <diacritics_sensitive>-Element angegeben.The diacritics setting of a thesaurus is specified in a single <diacritics_sensitive> element. Dieses Element enthält einen ganzzahligen Wert, der die Unterscheidung nach Akzent folgendermaßen steuert:This element contains an integer value that controls accent sensitivity, as follows:

Einstellung für diakritische ZeichenDiacritics Setting valueValue XMLXML
keine Unterscheidung nach AkzentAccent insensitive 00 <diacritics_sensitive>0</diacritics_sensitive>
Unterscheidung nach AkzentAccent sensitive 11 <diacritics_sensitive>1</diacritics_sensitive>

Hinweis

Diese Einstellung kann nur ein einziges Mal in der Datei vorgenommen werden und gilt für alle Suchmuster in der Datei.This setting can only be applied one time in the file, and it applies to all search patterns in the file. Diese Einstellung kann nicht für einzelne Muster angegeben werden.This setting cannot be specified for individual patterns.

Bearbeiten einer ThesaurusdateiEdit a thesaurus file

Der Thesaurus für eine bestimmte Sprache kann durch Bearbeiten der zugehörigen Thesaurusdatei (einer XML-Datei) konfiguriert werden.You can configure the thesaurus for a given language by editing its thesaurus file (an XML file). Beim Setup werden leere Thesaurusdateien installiert, die nur den <xml>-Container und ein auskommentiertes Beispiel für ein <thesaurus>-Element enthalten.During setup, empty thesaurus files that contain only the <xml> container and a commented-out sample <thesaurus> element are installed. Damit Volltextsuchabfragen, mit denen nach Synonymen gesucht wird, ordnungsgemäß ausgeführt werden, müssen Sie ein tatsächliches <thesaurus>-Element erstellen, das eine Gruppe von Synonymen definiert.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. Sie können zwei Formen von Synonymen definieren, nämlich Erweiterungssätze und Ersetzungssätze.You can define two forms of synonyms, expansion sets and replacement sets.

Bearbeiten einer ThesaurusdateiEdit a thesaurus file

  1. Öffnen Sie die Thesaurusdatei im Editor oder einem anderen Text-Editor.Open the thesaurus file in Notepad or another text editor.

  2. Wenn Sie die Thesaurusdatei zum ersten Mal bearbeiten, entfernen Sie die folgenden Kommentarzeilen am Anfang bzw. Ende der Datei: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. Fügen Sie einen Ersetzungs- oder Erweiterungssatz hinzu, ändern oder löschen Sie ihn.Add, modify, or delete a replacement set or an expansion set.

  4. Speichern Sie die Datei, und schließen Sie Editor.Save the file and close Notepad.

  5. Verwenden Sie sp_fulltext_load_thesaurus_file , um den Inhalt der Thesaurusdatei in tempdb zu laden, und geben Sie den Gebietsschemabezeichner (LCID) an, der der Sprache der Thesaurusdatei entspricht.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. So lautet z. B. für die englische Thesaurusdatei "tsenu.xml" der LCID 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
    

Empfehlungen für das Bearbeiten von ThesaurusdateienRecommendations for editing thesaurus files

Einträge in der Thesaurusdatei sollten keine Sonderzeichen enthalten.We recommend that entries in the thesaurus file contain no special characters. Dies wird deshalb empfohlen, weil die Wörtertrennung auf Sonderzeichen sehr fein reagiert.This is because word breakers have subtle behaviors with respect to special characters. Wenn ein Thesauruseintrag Sonderzeichen enthält, kann die Verwendung der Wörtertrennung in Kombination mit diesem Eintrag schwer erkennbare Auswirkungen auf das Verhalten einer Volltextabfrage haben.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.

Es wird empfohlen, in <sub>-Einträgen keine Stoppwörter zu verwenden, da Stoppwörter im Volltextindex ausgelassen werden.We recommend that <sub> entries contain no stopwords since stopwords are omitted from the full-text index. Abfragen werden erweitert, um die <sub>-Einträge in einer Thesaurusdatei einzubeziehen, und wenn ein <sub>-Eintrag Stoppwörter enthält, nimmt die Abfrage unnötigerweise an Größe zu.Queries are expanded to include the <sub> entries from a thesaurus file, and if a <sub> entry contains stopwords, query size increases unnecessarily.

Einschränkungen für das Bearbeiten von ThesaurusdateienRestrictions for editing thesaurus files

Beim Bearbeiten einer Thesaurusdatei gelten die folgenden Einschränkungen:The following restrictions apply to editing a thesaurus file:

  • Nur Systemadministratoren können Thesaurusdateien aktualisieren, ändern und löschen.Only system administrators can update, modify, or delete thesaurus files.

  • Wenn Sie Thesaurusdateien mithilfe von Text-Editor-Tools bearbeiten, müssen die Dateien im Unicode-Format gespeichert und Bytereihenfolgemarken (Byte Order Marks, BOMs) angegeben werden.When editing thesaurus files using text editor tools, the files must be saved in Unicode format, and Byte Order Marks must be specified.

  • Thesauruseinträge dürfen nicht leer sein oder eine Wörtertrennung zu einer leeren Zeichenfolge aufweisen.Thesaurus entries cannot be empty or word break to an empty string.

  • Ausdrücke in der Thesaurusdatei dürfen aus höchstens 512 Zeichen bestehen.Phrases in the thesaurus file must be no longer than 512 characters.

  • Ein Thesaurus darf in den <sub>-Einträgen von Erweiterungssätzen und in den <pat>-Elementen von Ersetzungssätzen keine doppelten Einträge enthalten.A thesaurus must not contain any duplicate entries among the <sub> entries of expansion sets and the <pat> elements of replacement sets.

Weitere InformationenSee 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)