Freigeben über


Konfigurieren und Verwalten von Thesaurusdateien für die Volltextsuche

In SQL Server können Volltextabfragen mithilfe eines Thesaurus nach Synonymen von benutzerdefinierten Begriffen suchen. Ein SQL Server Thesaurus definiert eine Reihe von Synonymen für eine bestimmte Sprache. Systemadministratoren können zwei Formen von Synonymen definieren: Erweiterungssätze und Ersetzungssätze. 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. 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.

Grundlegende Tasks zum Einrichten einer Thesaurusdatei

Bevor bei Volltextsuchabfragen auf der Serverinstanz nach Synonymen in einer bestimmten Sprache gesucht werden kann, müssen Sie Thesauruszuordnungen (Synonyme) für diese Sprache definieren. Jeder Thesaurus muss manuell konfiguriert werden, um Folgendes zu definieren:

  • Einstellung für diakritische Zeichen

    Für einen bestimmten Thesaurus sind alle Suchmuster entweder empfindlich oder unempfindlich gegenüber diakritischen Markierungen wie einer Tilde (~), einer akuten Akzentmarke (??) oder einem Umlaut (??) (d. a . akzentempfindlich oder akzentunempfindlich). Angenommen, Sie geben das Muster "caf??" an, das durch andere Muster in einer Volltextabfrage ersetzt werden soll. Wenn der Thesaurus akzentunabhängig ist, ersetzt die Volltextsuche die Muster "caf??" und "café". Wenn der Thesaurus akzentabhängig ist, ersetzt die Volltextsuche nur das Muster "caf??". Standardmäßig wird bei einem Thesaurus nicht nach Akzent unterschieden.

  • Erweiterungssatz

    Ein Erweiterungssatz enthält eine Gruppe von Synonymen wie "writer", "author" und "journalist", die bei einer Volltextabfrage ausgetauscht werden. Abfragen, die eine Übereinstimmung für ein beliebiges Synonym in einem Erweiterungssatz enthalten, werden erweitert, um jedes andere Synonym im Erweiterungssatz einzubeziehen.

    Weitere Informationen finden Sie unter "XML-Struktur eines Erweiterungssatzes" weiter unten in diesem Thema.

  • Ersetzungssatz

    Ein Ersetzungssatz enthält ein durch einen Substitutionssatz zu ersetzendes Textmuster. Ein Beispiel dafür finden Sie im Abschnitt "XML-Struktur eines Ersetzungssatzes" weiter unten in diesem Thema.

Ursprünglicher Inhalt der Thesaurusdateien

SQL Server stellt einen Satz von XML-Thesaurusdateien bereit, eine für jede unterstützte Sprache. Diese Dateien sind im Wesentlichen leer. Sie enthalten nur die XML-Struktur der obersten Ebene, die allen SQL Server Thesaurussen gemeinsam ist, und einen auskommentierte Beispiel-Thesaurus.

Die mit SQL Server freigegebenen Thesaurusdateien enthalten den folgenden XML-Code:

<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>  

Speicherort der Thesaurusdateien

Der Standardspeicherort der Thesaurusdateien lautet folgendermaßen:

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

Dieser Standardspeicherort enthält die folgenden Dateien:

  • Sprachspezifische Thesaurusdateien

    Beim Setup werden am oben genannten Speicherort leere Thesaurusdateien installiert. Für jede unterstützte Sprache wird eine separate Datei bereitgestellt. Ein Systemadministrator kann diese Dateien anpassen.

    Die Standarddateinamen der Thesaurusdateien haben das folgende Format:

    "ts" + <dreibuchstabige Sprachkürzel> + ".xml"

    Der Name der Thesaurusdatei für eine bestimmte Sprache wird in der Registrierung im folgenden Wert HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\\MSSearch\ angegeben.

  • Die globale Thesaurusdatei

    Eine leere globale Thesaurusdatei mit dem Namen „tsGlobal.xml“.

Sie können den Speicherort und den Namen einer Thesaurusdatei ändern, indem Sie den zugehörigen Registrierungsschlüssel ändern. Der Speicherort der Thesaurusdatei für jede einzelne Sprache ist im folgenden Wert in der Registrierung angegeben:

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

Die globale Thesaurusdatei entspricht der neutralen Sprache mit LCID 0. Dieser Wert kann nur von Administratoren geändert werden.

Wie Thesaurusdateien in Abfragen verwendet werden

Für jede Thesaurusabfrage wird zuerst ein sprachspezifischer Thesaurus und dann der globale Thesaurus verwendet. Zuerst wird die sprachspezifische Datei gesucht und (falls erforderlich) zur Verarbeitung geladen. Die Abfrage wird um die durch die Erweiterungssatz- und Ersetzungssatz-Regeln in der Thesaurusdatei angegebenen Synonyme erweitert. Anschließend werden diese Schritte für den globalen Thesaurus wiederholt. Wenn für einen Begriff in der sprachspezifischen Thesaurusdatei bereits eine Übereinstimmung gefunden wurde, werden die globalen Synonyme des Begriffs ignoriert.

Grundlegendes zur Struktur einer Thesaurusdatei

Jede Thesaurusdatei definiert einen XML-Container, dessen ID Microsoft Search Thesaurus lautet, sowie einen Kommentar, <!---->, der einen Beispielthesaurus enthält. Der Thesaurus wird in einem <Thesauruselement> definiert, das Beispiele der untergeordneten Elemente enthält, die die diakritische Einstellung, Erweiterungssätze und Ersetzungssätze wie folgt definieren:

  • XML-Struktur der Einstellung für diakritische Zeichen

    Die diakritische Einstellung eines Thesaurus wird in einem einzelnen <diacritics_sensitive-Element> angegeben. Dieses Element enthält einen ganzzahligen Wert, der die Unterscheidung nach Akzent folgendermaßen steuert:

    Einstellung für diakritische Zeichen Wert XML
    keine Unterscheidung nach Akzent 0 <diacritics_sensitive>0</diacritics_sensitive>
    Unterscheidung nach Akzent 1 <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. Diese Einstellung kann nicht für einzelne Muster angegeben werden.

  • XML-Struktur eines Erweiterungssatzes

    Jede Erweiterungsmenge ist in ein Erweiterungselement <> eingeschlossen. Innerhalb dieses Elements geben Sie eine oder mehrere Ersetzungen in einem <Unterelement> an. Im Erweiterungssatz können Sie eine Gruppe von Substitutionen angeben, die Synonyme zueinander sind.

    Sie können beispielsweise den expansion-Abschnitt bearbeiten, um die Substitutionen "writer", "author" und "journalist" als Synonyme zu behandeln. Volltextsuchabfragen, die Übereinstimmungen in einer Substitution enthalten, werden erweitert, um alle weiteren im Erweiterungssatz angegebenen Substitutionen einzubeziehen. 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.

    Der Erweiterungssatzabschnitt für das oben genannte Beispiel würde wie folgt aussehen:

    <expansion>  
            <sub>writer</sub>  
            <sub>author</sub>  
            <sub>journalist</sub>  
    </expansion>  
    
  • XML-Struktur eines Ersetzungssatzes

    Jeder Ersetzungssatz ist in ein Ersetzungselement <> eingeschlossen. Innerhalb dieses Elements können Sie ein oder mehrere Muster in einem <pat-Element> und null oder mehrere Ersetzungen in <Unterelementen> angeben, eines pro Synonym. Sie können ein durch einen Substitutionssatz zu ersetzendes Muster angeben. Muster und Substitutionen können ein Wort oder eine Wortfolge enthalten. Wenn für ein Muster keine Substitution angegeben wird, ist die Wirkung dieselbe, als würde das Muster aus der Benutzerabfrage entfernt.

    Angenommen, Sie möchten, dass Abfragen nach "Win8" (das Muster) durch "Windows Server 2012" oder "Windows 8.0" (die Substitutionen) ersetzt werden. Wenn Sie eine Volltextabfrage nach "Win8" ausführen, gibt die Volltextsuche nur Suchergebnisse zurück, die "Windows Server 2012" oder "Windows 8.0" enthalten. Sie gibt keine Ergebnisse zurück, die "Win8" enthalten. Dies liegt daran, dass das Muster "Win8" durch die Muster "Windows Server 2012" und "Windows 8.0" "ersetzt" wurde.

    Der Ersetzungssatzabschnitt für das oben genannte Beispiel würde wie folgt aussehen:

    <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. 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. Die Abfrage wird demzufolge als "IE online community" oder "IE 9 online community" verarbeitet.

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

    and

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

Arbeiten mit Thesaurusdateien

So bearbeiten Sie eine Thesaurusdatei

So laden Sie eine aktualisierte Thesaurusdatei

So zeigen Sie das Tokenisierungsergebnis einer Kombination aus Wörtertrennung, Thesaurus und Stoplisten an

Bearbeiten einer Thesaurusdatei

Der Thesaurus für eine bestimmte Sprache kann durch Bearbeiten der zugehörigen Thesaurusdatei (einer XML-Datei) konfiguriert werden. Während des Setups werden leere Thesaurusdateien installiert, die nur den <XML-Container> und ein auskommentiertes Thesaurus-Beispielelement <> enthalten. Damit Volltextsuchabfragen, die nach Synonymen suchen, ordnungsgemäß funktionieren, müssen Sie ein tatsächliches <Thesauruselement> erstellen, das eine Reihe von Synonymen definiert. Sie können zwei Formen von Synonymen definieren, nämlich Erweiterungssätze und Ersetzungssätze.

Einschränkungen für Thesaurusdateien

Beim Bearbeiten einer Thesaurusdatei gelten die folgenden Einschränkungen:

  • Nur Systemadministratoren können Thesaurusdateien aktualisieren, ändern und löschen.

  • 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.

  • Thesauruseinträge dürfen nicht leer sein oder eine Wörtertrennung zu einer leeren Zeichenfolge aufweisen.

  • Ausdrücke in der Thesaurusdatei dürfen aus höchstens 512 Zeichen bestehen.

  • Ein Thesaurus darf keine doppelten Einträge zwischen den <Untereinträgen> von Erweiterungssätzen und den <pat-Elementen> von Ersetzungssätzen enthalten.

Empfehlungen für Thesaurusdateien

Einträge in der Thesaurusdatei sollten keine Sonderzeichen enthalten. Dies wird deshalb empfohlen, weil die Wörtertrennung auf Sonderzeichen sehr fein reagiert. 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.

Es wird empfohlen, dass <Untereinträge> keine Stoppwörter enthalten, da Stoppwörter im Volltextindex weggelassen werden. Abfragen werden erweitert, um die <Untereinträge> aus einer Thesaurusdatei einzuschließen, und wenn ein <Untereintrag> Stoppwörter enthält, erhöht sich die Abfragegröße unnötigerweise.

So bearbeiten Sie eine Thesaurusdatei

  1. Öffnen Sie die Thesaurusdatei in Editor.

  2. Wenn Sie die Thesaurusdatei zum ersten Mal bearbeiten, entfernen Sie die folgenden Kommentarzeilen am Anfang bzw. Ende der Datei:

    <!--Commented out  
    -->  
    
  3. Fügen Sie einen Ersetzungs- oder Erweiterungssatz hinzu, ändern oder löschen Sie ihn.

  4. Speichern Sie die Datei, und schließen Sie Editor.

  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. So lautet z. B. für die englische Thesaurusdatei "tsenu.xml" der LCID 1033.

    USE AdventureWorks2012 ;  
    EXEC sys.sp_fulltext_load_thesaurus_file 1033;  
    GO  
    

Weitere Informationen

CONTAINS (Transact-SQL)
CONTAINSTABLE (Transact-SQL)
FREETEXT (Transact-SQL)
FREETEXTTABLE (Transact-SQL)
Volltextsuche