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
Azure SQL-Datenbank
Verwaltete Azure SQL-Instanz
Wenn Sie einen Volltextindex erstellen, geben Sie für die indexierte Spalte eine Spaltensprache an. Volltextabfragen in der Spalte verwenden den Wortbrecher und die Stemmer der angegebenen Sprache. Betrachten Sie, wie die Full-Text Engine Ihren Text tokenisiert und dann indexiert, wenn Sie die Spaltensprache auswählen.
Hinweis
Wenn Sie eine Sprache auf Spaltenebene für eine Spalte mit Volltextindex angeben möchten, verwenden Sie die LANGUAGE <language_term> Klausel, wenn Sie die Spalte angeben. Weitere Informationen finden Sie unter CREATE FULLTEXT INDEX und ALTER FULLTEXT INDEX.
Sprachunterstützung bei der Volltextsuche
Dieser Abschnitt enthält eine Einführung in die Wörtertrennung und Wortstammerkennung und beschreibt, wie die Volltextsuche die LCID der Spaltensprache verwendet.
Einführung in Wörtertrennung und Wortstammerkennung
Die SQL Server-Datenbank-Engine enthält standardmäßig Wortbrecher und Stemmer für viele Sprachen, die standardmäßig aktiviert sind. Die Microsoft Natural Language Group (NLG) implementiert und unterstützt diese sprachlichen Komponenten. Eine Liste der unterstützten Sprachen finden Sie unter sys.fulltext_languages.
Externe Komponenten wie Wortbrecher und Filter sollten signiert werden, um die Sicherheit zu verbessern. Um die Signatur zu überprüfen, führen Sie die folgende Anweisung aus:
EXECUTE sp_fulltext_service 'verify_signature';
Wie Full-Text Suche den Namen der Sprache auf Spaltenebene verwendet
Wenn Sie einen Volltextindex erstellen, geben Sie für jede Spalte einen gültigen Sprachnamen an. Wenn ein Sprachname gültig ist, aber die sys.fulltext_languages Katalogansicht ihn nicht zurückgibt, greift Full-Text Suche auf den nächstgelegenen verfügbaren Sprachnamen derselben Sprachfamilie zurück, falls vorhanden. Andernfalls verwendet die Volltextsuche die neutrale Wörtertrennung. Um dieses Rückfallverhalten zu vermeiden, geben Sie einen gültigen und verfügbaren Sprachnamen an.
Hinweis
Die LCID wird für alle Datentypen verwendet, die für die Volltextindizierung geeignet sind (z. B. char oder nchar). Auch wenn die Sortierreihenfolge einer Spalte vom Typ char, varcharoder text auf eine andere Sprache als die von der LCID vorgegebenen festgelegt ist, wird die LCID während der Volltextindizierung und -abfrage dieser Spalten trotzdem verwendet.
Worttrennung
Bei der Wörtertrennung wird der zu indizierende Text an den sprachspezifischen Wortgrenzen zerlegt. Aus diesem Grund unterscheidet sich das Wörtertrennungsverhalten für die einzelnen Sprachen. Wenn Sie eine Sprache, x, verwenden, um mehrere Sprachen {x, y und z} zu indizieren, kann einiges von diesem Verhalten zu unerwarteten Ergebnissen führen. Zum Beispiel könnte ein Bindestrich (-) oder ein Komma (,) ein Wortbruch-Element sein, das in einer Sprache weggeworfen wird, aber nicht in einer anderen. Selten kann es zu unerwartetem Stemming-Verhalten kommen, da ein bestimmtes Wort in verschiedenen Sprachen unterschiedlich auf seinen Wortstamm reduziert werden kann. Zum Beispiel sind in der englischen Sprache Wortgrenzen typischerweise Leerzeichen oder eine Art von Satzzeichen. In anderen Sprachen, wie dem Deutschen, können Wörter oder Zeichen kombiniert werden. Daher sollte die von Ihnen ausgewählte Sprache auf Spaltenebene die Sprache darstellen, die Sie in Zeilen dieser Spalte speichern möchten.
Westliche Sprachen
Wenn Sie für die westliche Sprachenfamilie nicht sicher sind, welche Sprachen in einer Spalte gespeichert werden sollen, oder sie erwarten, dass mehrere sprachen gespeichert werden, besteht eine allgemeine Problemumgehung darin, den Wortumbruch für die komplexeste Sprache zu verwenden, die in der Spalte gespeichert werden kann.
Sie können z. B. davon ausgehen, dass englischer, spanischer und deutscher Inhalt in einer einzelnen Spalte gespeichert wird. Diese drei westlichen Sprachen besitzen ähnliche Wortbruchmuster, wobei die deutschen Muster die komplexesten sind. Daher ist es in diesem Fall eine gute Wahl, den deutschen Wortbrecher zu verwenden, der englische und spanische Texte korrekt verarbeiten kann. Im Gegensatz dazu verarbeitet der englische Word Breaker deutschen Text möglicherweise nicht perfekt, weil das Deutsche viele Komposita hat.
Die Verwendung des Word Breakers der komplexesten Sprache in einer Sprachfamilie garantiert keine fehlerfreie Indexierung aller Sprachen dieser Sprachfamilie. Es können Ausnahmefälle auftreten, in denen die komplexeste Wörtertrennung Text, der in einer anderen Sprache geschrieben ist, nicht richtig verarbeiten kann.
Nicht-westliche Sprachen
Für nicht-westliche Sprachen (wie Chinesisch, Japanisch, Hindi usw.) funktioniert der vorherige Workaround aus sprachlichen Gründen nicht unbedingt. Für nicht-westliche Sprachen betrachten Sie eine der folgenden Umgehungsmöglichkeiten:
Sprachen unterschiedlicher Sprachgruppen
Wenn eine Spalte sehr unterschiedliche Sprachen enthalten könnte, z. B. Spanisch und Japanisch, sollten Sie überlegen, ob die Sprachen in separaten Spalten gespeichert werden können. Diese Trennung ermöglicht es Ihnen, den sprachspezifischen Wortbrecher für jede Spalte zu verwenden. Wenn Sie diese Lösung wählen und die Abfragesprache zur Abfragezeit nicht kennen, müssen Sie die Abfrage ggf. für beide Spalten stellen, um sicherzustellen, dass die richtige Zeile bzw. das richtige Dokument gefunden wird.
Für binäre Inhalte (wie Microsoft Word-Dokumente)
Wenn der indexierte Inhalt vom binären Typ ist, kann der Full-Text Search-Filter, der den Textinhalt verarbeitet, bevor er an den Wortbrecher weitergeleitet wird, bestimmte Sprachtags innerhalb der Binärdatei berücksichtigen. In diesem Fall gibt der Filter zur Indizierungszeit die rechte LCID für ein Dokument oder einen Abschnitt eines Dokuments aus. Die Volltext-Engine ruft mit dieser LCID dann die Wörtertrennung für die Sprache auf. Nach der Indexierung von mehrsprachigen Inhalten sollte jedoch überprüft werden, ob der Inhalt korrekt indexiert wurde.
Für Klartextinhalte
Wenn Sie Nur-Text-Inhalte verwenden, können Sie diese in den Datentyp xml konvertieren und Sprachtags hinzufügen, die für ein Dokument oder einen Dokumentabschnitt jeweils die entsprechende Sprache angeben. Dazu müssen Sie vor der Volltextindizierung jedoch die Sprache kennen.
Wortstammerkennung
Ein weiterer Aspekt, den Sie beim Wählen der Spaltensprache berücksichtigen sollten, ist die Wortstammerkennung. AlsWortstammerkennung wird bei Volltextabfragen die Suche nach allen Flexionsformen eines Worts in einer bestimmten Sprache bezeichnet. Wenn Sie zur Verarbeitung mehrerer Sprachen einen generischen Wordbreaker verwenden, funktioniert der Stemmingprozess nur für die für die Spalte angegebene Sprache, nicht für die anderen Sprachen in derselben Spalte. Die Wortstammerkennung für Deutsch funktioniert beispielsweise nicht für Englisch oder Spanisch usw. Dieses Verhalten kann deine Abrufleistung beeinflussen, je nachdem, welche Sprache du bei der Abfrage wählst.
Auswirkung des Spaltentyps auf Full-Text Suche
Ein weiterer Aspekt bei der Wahl der Sprache ist die Art und Weise, wie die Daten dargestellt werden. Für Daten, die nicht in einer varbinary(max) -Spalte gespeichert sind, wird keine spezielle Filterung ausgeführt. Stattdessen durchläuft der Text die Worteinheitenerkennungs-Komponente i. A. unverändert.
Außerdem sind Word Breaker hauptsächlich für die Verarbeitung schriftlicher Texte konzipiert. Wenn Ihr Text Markup enthält (wie HTML), kann die sprachliche Genauigkeit während der Indexierung und Suche reduziert werden. In diesem Fall hast du zwei Möglichkeiten: Die bevorzugte Methode ist, die Textdaten in einer varbinären (max)- Spalte zu speichern und deren Dokumenttyp anzugeben, damit sie gefiltert werden können. Wenn dieser Ansatz keine Option ist, solltest du den neutralen Wortbrecher verwenden und, wenn möglich, Markup-Daten (wie 'br' in HTML) zu deinen Rauschwortlisten hinzufügen.
Hinweis
Sprachbasiertes Stemming wird nicht angewendet, wenn Sie die neutrale Sprache angeben.
Spezifizieren Sie eine nicht-standardmäßige Spaltensprache in einer Volltextanfrage
Standardmäßig analysiert Full-Text Search in der Datenbank-Engine die Abfragebegriffe anhand der für jede Spalte in der Volltextklausel angegebenen Sprache. Um dieses Verhalten zu überschreiben, geben Sie zur Abfragezeit eine nicht standardmäßige Sprache an. Für unterstützte Sprachen, deren Ressourcen installiert sind, kann die LANGUAGE <language_term> Klausel einer CONTAINS-, CONTAINSTABLE-, FREETEXT- oder FREETEXTTABLE-Abfrage verwendet werden, um die Sprache anzugeben, die für die Wortsegmentierung, Stammerkennung, den Thesaurus und die Stoppwortverarbeitung der Abfragebegriffe verwendet wird.