Konfigurieren und Verwalten von Wörtertrennungen und Wortstammerkennungen für die Suche (SQL Server)
Gilt für: SQL Server Azure SQL-Datenbank
Wörtertrennung und Wortstammerkennung führen eine linguistische Analyse aller volltextindizierten Daten aus. Die linguistische Analyse führt die folgenden beiden Schritte aus:
Suchen von Wortgrenzen (Wörtertrennung). Die Wörtertrennung einzelne Wörter, indem die Wortgrenzen basierend auf den lexikalischen Regeln der Sprache ermittelt werden. Jedes Wort (auch bezeichnet als Token) wird zur Größenreduzierung in einer komprimierten Darstellung in den Volltextindex eingefügt.
Konjugieren von Verben (Wortstammerkennung). Die Wortstammerkennung generiert Flexionsformen eines bestimmten Worts basierend auf den jeweiligen Regeln der Sprache. (Zum Beispiel sind „laufend“, „lief“ und „gelaufen“ verschiedene Formen des Worts „laufen“.)
Wörtertrennungen und Wortstammerkennungen sind sprachspezifisch.
Wörtertrennungen und Wortstammerkennungen sind sprachspezifisch, und die Regeln für die linguistische Analyse unterscheiden sich für verschiedene Sprachen. Mit sprachspezifischen Wörtertrennungen erzielen Sie für die jeweilige Sprache genauere Ergebnisbegriffe.
Um Wörtertrennungen und Wortstammerkennungen für alle von SQL Server unterstützten Sprachen zu verwenden, müssen Sie in der Regel keine Maßnahmen ergreifen.
- Wenn es eine Wörtertrennung für eine Sprachfamilie gibt, jedoch nicht für die jeweilige Untersprache, wird die Hauptsprache verwendet. Beispielsweise wird Text in kanadischem Französisch mit der Wörtertrennung für Französisch behandelt.
- Ist für eine Sprache keine Wörtertrennung verfügbar, wird die neutrale Wörtertrennung verwendet. Mit der neutralen Wörtertrennung werden neutrale Zeichen, wie Leerzeichen und Satzzeichen, als Wortgrenzen betrachtet.
Anzeigen der vollständigen Liste der unterstützten Sprachen
Verwenden Sie die folgende Transact-SQL-Anweisung, um die Liste der von SQL Server-Volltextsuche unterstützten Sprachen anzuzeigen. Das Vorhandensein einer Sprache in der Liste gibt an, dass Wörtertrennungen für diese Sprache registriert sind.
SELECT * FROM sys.fulltext_languages
Anzeigen der Liste der registrierten Wörtertrennungen
Zur Verwendung der Wörtertrennungen für eine Sprache durch die Volltextsuche müssen diese registriert werden. Bei registrierten Wörtertrennungen sind die zugeordneten sprachlichen Ressourcen – Wortstammerkennung, Füllwörter (Stoppwörter) und Thesaurusdateien – für Volltextindizierungs- und Volltextabfragevorgänge verfügbar.
Verwenden Sie die folgende Anweisung, um die Liste der registrierten Wörtertrennungskomponenten anzuzeigen.
EXEC sp_help_fulltext_system_components 'wordbreaker';
GO
Zusätzliche Optionen und weitere Informationen finden Sie unter sp_help_fulltext_system_components (Transact-SQL).
Hinzufügen oder Entfernen einer Wörtertrennung
Wenn Sie eine Wörtertrennung hinzufügen, entfernen oder ändern, müssen Sie die Liste der Microsoft Windows-Gebietsschemabezeichner (LCID) aktualisieren, die bei Volltextindizierung und -abfrage unterstützt werden. Weitere Informationen finden Sie unter anzeigen oder Ändern von registrierten filtern und Wörtertrennungen.
Festlegen der Option für die Volltext-Standardsprache
Bei einer lokalisierten Version von SQL Serverwird die Option SQL Server default full-text language vom -Setup auf die Sprache des Servers festgelegt, falls eine geeignete Übereinstimmung vorhanden ist. Bei einer nicht lokalisierten Version von SQL Serverwird Englisch für die Option Standard-Volltextsprache verwendet.
Beim Erstellen oder Ändern eines Volltextindexes können Sie für jede volltextindizierte Spalte eine andere Sprache angeben. Ist für eine Spalte keine Sprache angegeben, wird standardmäßig der Wert der Konfigurationsoption Volltext-Standardspracheverwendet.
Hinweis
Alle Spalten, die in einer einzelnen Klausel für eine Volltextabfragefunktion aufgelistet sind, müssen dieselbe Sprache verwenden, sofern nicht die LANGUAGE-Option in der Abfrage angegeben ist. Die Sprache der volltextindizierten Spalte, auf die sich die Abfrage bezieht, bestimmt die linguistische Analyse, die mit Argumenten der Volltext-Abfrageprädikate (CONTAINS und FREETEXT) und -Funktionen (CONTAINSTABLE und FREETEXTTABLE) ausgeführt wird.
Auswählen der Sprache für eine indizierte Spalte
Beim Erstellen eines Volltextindex wird empfohlen, die Sprache für jede indizierte Spalte anzugeben. Wenn für eine Spalte keine Sprache angegeben ist, wird die Standardsprache des Systems verwendet. Die Sprache einer Spalte bestimmt, welche Wörtertrennung und Wortstammerkennung zum Indizieren dieser Spalte verwendet wird. Außerdem wird die Thesaurusdatei dieser Sprache bei Volltextabfragen der Spalte verwendet.
Bei der Wahl der Spaltensprache für die Erstellung eines Volltextindex sind mehrere Dinge zu bedenken. Diese beziehen sich darauf, wie der Text von der Volltext-Engine in Token zerlegt und anschließend indiziert wird. Weitere Informationen finden Sie unter Auswählen einer Sprache beim Erstellen eines Volltextindex.
Führen Sie die folgende Anweisung aus, um die Wörtertrennungssprache bestimmter Spalten anzuzeigen.
SELECT language_id AS 'LCID' FROM sys.fulltext_index_columns;
Zusätzliche Optionen und weitere Informationen finden Sie unter sys.fulltext_index_columns (Transact-SQL).
Behebung von Timeoutfehlern bei der Wörtertrennung
Timeoutfehler können bei der Wörtertrennung in verschiedenen Situationen auftreten. Weitere Informationen zu diesen Situationen sowie zur Behandlung dieser Fehler finden Sie unter MSSQLSERVER_30053.
Informationen zum Fehler MSSQLSERVER_30053
Eigenschaft | Wert |
---|---|
Produktname | SQL Server |
Ereignis-ID | 30053 |
Ereignisquelle | MSSQLSERVER |
Komponente | SQLEngine |
Symbolischer Name | FTXT_QUERY_E_WORDBREAKINGTIMEOUT |
Meldungstext | Timeout bei der Wörtertrennung für die Volltextabfragezeichenfolge. Dies kann passieren, wenn die Verarbeitung der Volltextabfragezeichenfolge lange dauert oder eine große Anzahl von Abfragen auf dem Server ausgeführt wird. Führen Sie die Abfrage bei geringerer Auslastung erneut aus. |
Erklärung
In den folgenden Fällen kann es zu Timeoutfehlern bei der Wörtertrennung kommen:
Die Wörtertrennung für die Abfragesprache ist falsch konfiguriert; z. B. sind die entsprechenden Registrierungseinstellungen falsch.
Die Wörtertrennung schlägt bei einer bestimmten Abfragezeichenfolge fehl.
Die Wörtertrennung gibt bei einer bestimmten Abfragezeichenfolge zu viele Daten zurück. Diese Daten werden als möglicher Angriff in Form eines Pufferüberlaufs interpretiert, was dafür sorgt, dass der für die Ausführung der Wörtertrennungsdienste verantwortliche Filterdaemonprozess (fdhost.exe) beendet wird.
Der Filterdaemonprozess wurde falsch konfiguriert.
Zu den häufigsten Konfigurationsproblemen gehören abgelaufene Kennwörter oder Domänenrichtlinien, die eine Anmeldung am Filterdaemonkonto verhindern.
Auf der Serverinstanz wird eine sehr große Abfragelast ausgeführt, z. B. dauert die Verarbeitung der Volltextabfragezeichenfolge sehr lange, oder es wird eine große Anzahl von Abfragen auf dem Server ausgeführt. Dies ist die wahrscheinliche Ursache.
Benutzeraktion
Wählen Sie wie folgt die Benutzeraktion aus, die der wahrscheinlichen Ursache des Timeouts entspricht:
Wahrscheinliche Ursache | Aktion des Benutzers |
---|---|
Die Wörtertrennung ist für die Abfragesprache nicht richtig konfiguriert. | Wenn Sie die Wörtertrennung eines Drittanbieters verwenden, ist sie möglicherweise auf dem Betriebssystem falsch registriert. Registrieren Sie die Wörtertrennung in diesem Fall erneut. Weitere Informationen finden Sie unter Wiederherstellen der von der Suche verwendeten Wörtertrennungen auf die vorherige Version. |
Die Wörtertrennung schlägt bei einer bestimmten Abfragezeichenfolge fehl. | Wenn die Wörtertrennung von SQL Server unterstützt wird, wenden Sie sich an den Microsoft-Kundenservice und -support. |
Die Wörtertrennung gibt bei einer bestimmten Abfragezeichenfolge zu viele Daten zurück. | Wenn die Wörtertrennung von SQL Server unterstützt wird, wenden Sie sich an den Microsoft-Kundenservice und -support. |
Der Filterdaemonprozess wurde falsch konfiguriert. | Stellen Sie sicher, dass Sie das aktuelle Kennwort verwenden und dass die Anmeldung unter dem Filterdaemonkonto nicht von einer Domänenrichtlinie verhindert wird. |
Auf der Serverinstanz wird eine große Abfragelast ausgeführt. | Führen Sie die Abfrage bei geringerer Auslastung erneut aus. |
Auswirkungen der aktualisierten Wörtertrennungen
Jede Version von SQL Server enthält in der Regel neue Wörtertrennungen, die über bessere linguistische Regeln als frühere Wörtertrennungen verfügen und außerdem genauer sind. Gegebenenfalls verhalten sich die neuen Wörtertrennungen im Vergleich zu den Wörtertrennungen in importierten SQL Server-Volltextindizes etwas anders.
Dies ist wichtig, wenn ein Volltextkatalog importiert wurde, während eine Datenbank auf die neue Version von SQL Server aktualisiert wurde. Eine oder mehrere Sprachen, die von den Volltextindizes im Volltextkatalog verwendet werden, sind jetzt ggf. neuen Wörtertrennungen zugeordnet. Weitere Informationen finden Sie unter Upgrade der Volltextsuche.
Weitere Informationen
CREATE FULLTEXT INDEX (Transact-SQL)
ALTER FULLTEXT INDEX (Transact-SQL)
Konfigurieren und Verwalten von Stoppwörtern und Stopplisten für Volltextsuche