Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
SQL Server Full-Text Suchabfragen können mithilfe eines Full-Text Search-Thesaurus nach Synonymen von vom Benutzer angegebenen Ausdrücken suchen. Jeder Thesaurus definiert Synonyme für eine bestimmte Sprache. 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.
Thesaurusabgleich erfolgt für alle FREETEXT - und FREETEXTTABLE-Abfragen sowie für alle CONTAINS - und CONTAINSTABLE-Abfragen , die die FORMSOF THESAURUS Klausel angeben.
Ein Thesaurus der Volltextsuche ist eine XML-Textdatei.
Was ein Thesaurus enthält
Bevor bei Volltextsuchabfragen 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 die folgenden Einstellungen zu definieren:
Erweiterungsset
Ein Erweiterungssatz enthält eine Gruppe von Synonymen wie „Schriftsteller“, „Autor“ und „Journalist“, die bei einer Volltextabfrage gegenseitig ersetzt 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 Artikel.
Ersatzsatz
Ein Ersetzungssatz enthält ein durch einen Substitutionssatz zu ersetzendes Textmuster. Ein Beispiel finden Sie im Abschnitt XML-Struktur eines Ersetzungssatzes weiter unten in diesem Artikel.
Diakritika-Einstellung
Bei einem gegebenen Thesaurus reagieren alle Suchmuster entweder empfindlich oder unempfindlich auf diakritische Zeichen wie Tilde (~), Akut-Akzentzeichen (´) oder Umlaut (¨) (d.h. es erfolgt eine Unterscheidung nach Akzent oder nicht). Angenommen, Sie haben in einer Volltextsuchabfrage angegeben, dass das Suchmuster "café" durch ein anderes Muster ersetzt werden soll. Wenn im Thesaurus nicht nach Akzent unterschieden wird, ersetzt die Volltextsuche die Muster „café“ und „cafe“. Wenn im Thesaurus nach Akzent unterschieden wird, ersetzt die Volltextsuche nur das Muster "café". Standardmäßig wird bei einem Thesaurus nicht nach Akzent unterschieden.
Thesaurus-Standarddateien
stellt einen Satz von XML-Thesaurusdateien bereit, und zwar eine für jede unterstützte Sprache. Diese Dateien sind im Wesentlichen leer. Sie enthalten nur die XML-Hauptstruktur, die alle -Thesaurusdateien aufweisen, sowie einen auskommentierten Beispielthesaurus.
Speicherort der Thesaurusdateien
Der Standardspeicherort der Thesaurusdateien lautet folgendermaßen:
<SQL_Server_data_files_path>\MSSQL13.MSSQLSERVER\MSSQL\FTDATA\
Dieser Standardspeicherort enthält die folgenden Dateien:
Sprachspezifische Thesaurusdateien
Setup installiert leere Thesaurusdateien am vorherigen Speicherort. 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' + <three-letter language-abbreviation> + '.xml'Der Name einer Thesaurusdatei für eine bestimmte Sprache ist in der Registrierung im folgenden Wert angegeben:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<instance-name>\MSSearch\<language-abbrev>Die globale Thesaurusdatei
Eine leere globale Thesaurusdatei mit dem Namen „tsGlobal.xml“.
Ändern des Speicherorts einer Thesaurusdatei
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 Volltextabfragen den Thesaurus verwenden
Für jede Thesaurusabfrage wird zuerst ein sprachspezifischer Thesaurus und dann der globale Thesaurus verwendet.
Zuerst sucht die Abfrage nach der sprachspezifischen Datei und lädt sie zur Verarbeitung (es sei denn, sie wurde bereits geladen). Die Abfrage wird um die sprachspezifischen Synonyme erweitert, die in der Thesaurusdatei durch die Regeln für Erweiterungssätze und Ersetzungssätze festgelegt sind.
Anschließend werden diese Schritte für den globalen Thesaurus wiederholt. Wenn ein Begriff jedoch bereits Teil einer Übereinstimmung in der sprachspezifischen Thesaurusdatei ist, ist dieser Begriff für den Abgleich im globalen Thesaurus nicht geeignet.
Struktur einer Thesaurusdatei
Jede Thesaurusdatei definiert einen XML-Container, dessen ID lautet Microsoft Search Thesaurus, und einen Kommentar, <!-- ... -->, der ein Beispiel-Thesaurus enthält. 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.
Eine typische leere Thesaurusdatei enthält den folgenden 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 Erweiterungssatzes
Jeder Erweiterungssatz ist in ein <expansion>-Element eingeschlossen. Innerhalb dieses Elements geben Sie eine oder mehrere Substitutionen in einem <sub>-Element 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 Ersetzung enthalten, werden erweitert, um alle anderen Ersetzungen einzuschließen, die im Erweiterungssatz angegeben sind. 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 vorherige Beispiel würde wie folgt aussehen:
<expansion>
<sub>writer</sub>
<sub>author</sub>
<sub>journalist</sub>
</expansion>
XML-Struktur einer Ersetzungsmenge
Jeder Ersetzungssatz ist in ein <replacement>-Element eingeschlossen. Innerhalb dieses Elements können Sie ein oder mehrere Muster in einem <pat> Element und null oder mehr Ersetzungen in <sub> Elementen 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 Ersetzung angegeben ist, hat sie die Auswirkung, das Muster aus der Benutzerabfrage zu entfernen.
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. Es werden keine Ergebnisse zurückgegeben, die "Win8" enthalten. Dies liegt daran, dass das Muster "Win8" durch die Muster "Windows Server 2012" und "Windows 8.0" ersetzt wird.
So würde der Abschnitt für das Ersatzteil-Set im vorherigen Beispiel 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 daher als "IE Online-Community" oder "IE 9 Online-Community" verarbeitet.
<replacement>
<pat>Internet</pat>
<sub>intranet</sub>
</replacement>
und
<replacement>
<pat>Internet Explorer</pat>
<sub>IE</sub>
<sub>IE 9</sub>
</replacement>
XML-Struktur der Einstellung für diakritische Zeichen
Die Einstellung eines Thesaurus für diakritische Zeichen wird in einem einzelnen <diacritics_sensitive>-Element angegeben. Dieses Element enthält einen ganzzahligen Wert, der die Akzentempfindlichkeit wie folgt steuert:
| Einstellung für diakritische Zeichen | Wert | XML |
|---|---|---|
| Keine Unterscheidung nach Akzent | 0 | <diacritics_sensitive>0</diacritics_sensitive> |
| Akzentsensitiv | 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 für einzelne Muster nicht angegeben werden.
Bearbeiten eines Thesaurus
Der Thesaurus für eine bestimmte Sprache kann durch Bearbeiten der zugehörigen Thesaurusdatei (einer XML-Datei) konfiguriert werden. Beim Setup werden leere Thesaurusdateien installiert, die nur den <xml>-Container und ein auskommentiertes Beispiel für ein <thesaurus>>-Element enthalten. 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. Sie können zwei Formen von Synonymen definieren, nämlich Erweiterungssätze und Ersetzungssätze.
Bearbeiten einer Thesaurusdatei
Öffnen Sie die Thesaurusdatei im Editor oder einem anderen Text-Editor.
Wenn Sie die Thesaurusdatei zum ersten Mal bearbeiten, entfernen Sie die folgenden Kommentarzeilen am Anfang bzw. Am Ende der Datei:
<!--Commented out -->Fügen Sie einen Ersetzungs- oder Erweiterungssatz hinzu, ändern oder löschen Sie ihn.
Speichern Sie die Datei und schließen Sie den Editor.
Verwenden Sie sp_fulltext_load_thesaurus_file , um den Inhalt der Thesaurusdatei in
tempdbdie Datei zu laden, und geben Sie den lokalen Bezeichner (LCID) an, der der Sprache der Thesaurusdatei entspricht. So lautet z. B. für die englische Thesaurusdatei "tsenu.xml" der LCID 1033.USE AdventureWorks; EXECUTE sys.sp_fulltext_load_thesaurus_file 1033; GO
Empfehlungen für das Bearbeiten von 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, können Worttrenner, die in Verbindung mit diesem Eintrag verwendet werden, subtile Auswirkungen auf das Verhalten einer Volltextabfrage haben.
Es wird empfohlen, in <sub>-Einträgen keine Stoppwörter zu verwenden, da Stoppwörter im Volltextindex ausgelassen werden. 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.
Einschränkungen für das Bearbeiten von Thesaurusdateien
Beim Bearbeiten einer Thesaurusdatei gelten die folgenden Einschränkungen:
Nur Systemadministratoren können Thesaurusdateien aktualisieren, ändern und löschen.
Wenn Sie Thesaurusdateien mit Text-Editor-Tools bearbeiten, müssen die Dateien im Unicode-Format gespeichert werden, und Bytereihenfolgezeichen müssen angegeben werden.
Thesauruseinträge dürfen nicht leer sein und es darf keine Worttrennung zu einer leeren Zeichenfolge erfolgen.
Ausdrücke in der Thesaurusdatei dürfen aus höchstens 512 Zeichen bestehen.
Ein Thesaurus darf in den
<sub>-Einträgen von Erweiterungssätzen und in den<pat>-Elementen von Ersetzungssätzen keine doppelten Einträge enthalten.