sys.dm_fts_parser (Transact-SQL)

Gibt das endgültige Tokenisierungsergebnis nach Anwendung einer gegebenen Kombination aus Wörtertrennung, Thesaurus und Stoppliste auf eine eingegebene Abfragezeichenfolge an. Das Tokenisierungsergebnis entspricht der Ausgabe des Volltextmoduls für die angegebene Abfragezeichenfolge.

sys.dm_fts_parser ist eine dynamische Verwaltungsfunktion.

Syntax

sys.dm_fts_parser('query_string', lcid, stoplist_id, accent_sensitivity)

Argumente

  • query_string
    Die Abfrage, die Sie analysieren möchten. query_string kann eine Zeichenfolgenkette mit CONTAINS-Syntaxunterstützung sein. Sie können z. B. Flexionsformen, einen Thesaurus und logische Operatoren einschließen.

  • lcid
    Gebietsschemabezeichner (LCID) der Wörtertrennung, die für die Analyse von query_string verwendet werden soll.

  • stoplist_id
    ID der Stoppliste, falls vorhanden, die von der mit lcid angegebenen Wörtertrennung verwendet werden soll. stoplist_id ist int. Wenn Sie 'NULL' angeben, wird keine Stoppliste verwendet. Wenn Sie 0 angeben, wird die Systemstoppliste STOPLIST verwendet.

    Eine Stopplisten-ID ist innerhalb der Datenbank eindeutig. Verwenden Sie die sys.fulltext_indexes-Katalogsicht, um die Stopplisten-ID für einen Volltextindex einer gegebenen Tabelle abzurufen.

  • accent_sensitivity
    Boolescher Wert, mit dem gesteuert wird, ob diakritische Zeichen bei der Volltextsuche berücksichtigt werden. accent_sensitivity ist bit mit einem der folgenden Werte:

    Wert

    Unterscheidung nach Akzent…

    0

    Nein

    Zwischen Wörtern wie "Café" und "Cafe" wird nicht unterschieden.

    1

    Ja

    Zwischen Wörtern wie „Café“ und „Cafe“ wird unterschieden.

    HinweisHinweis

    Führen Sie die folgende Transact-SQL-Anweisung aus, um die aktuelle Einstellung für diesen Wert für einen Volltextkatalog anzuzeigen: SELECT fulltextcatalogproperty('Katalogname', 'AccentSensitivity');.

Zurückgegebene Tabelle

Spaltenname

Datentyp

Beschreibung

keyword

varbinary(128)

Die hexadezimale Darstellung eines gegebenen Schlüsselworts, das von einer Wörtertrennung zurückgegeben wurde. Diese Darstellung wird zum Speichern des Schlüsselworts im Volltextindex verwendet. Dieser Wert ist für den Benutzer nicht lesbar, aber er ist hilfreich, um ein gegebenes Schlüsselwort mit einer Ausgabe zu verknüpfen, die von anderen dynamischen Verwaltungssichten zurückgegeben wird, die den Inhalt eines Volltextindex zurückgeben, z. B. sys.dm_fts_index_keywords und sys.dm_fts_index_keywords_by_document.

HinweisHinweis
OxFF stellt das Sonderzeichen dar, mit dem das Ende einer Datei oder eines Datasets angegeben wird.

group_id

int

Enthält einen ganzzahligen Wert, mit dem die logische Gruppe unterschieden werden kann, aus der ein gegebener Begriff generiert wurde. Beispiel: Mit 'Server AND DB OR FORMSOF(THESAURUS, DB)"' werden die folgenden group_id-Werte auf Englisch ausgegeben:

group_id display_term
1Server
2DB
3DB

phrase_id

int

Enthält einen ganzzahligen Wert, der zur Unterscheidung der Fälle dient, in denen alternative Formen für zusammengesetzte Wörter (z. B. 'full-text') von der Wörtertrennung ausgegeben werden. Wenn zusammengesetzte Wörter vorhanden sind (z. B. 'multi-millon'), gibt die Wörtertrennung u. U. alternative Formen aus. Diese alternativen Formen (Ausdrücke) müssen in einigen Fällen unterschieden werden.

Beispiel: Mit 'multi-million' werden die folgenden phrase_id-Werte auf Englisch ausgegeben:

phrase_id display_term
1 multi
1 million
2 multimillion

occurrence

int

Gibt die Reihenfolge der einzelnen Begriffe im Analyseergebnis an. Beispiel: Für den Ausdruck "SQL Server query processor" enthält die Spalte occurrence die folgenden Vorkommenwerte auf Englisch:

occurrence display_term
1 SQL
2 Server
3 query
4 processor

special_term

nvarchar(8000)

Enthält Informationen über die Eigenschaften des Begriffs, der von der Wörtertrennung ausgegeben wird. Hierbei gibt es folgende Möglichkeiten:

Exact match (Genaue Übereinstimmung)

Noise word (Füllwort)

End of Sentence (Ende des Satzes)

End of paragraph (Ende des Absatzes)

End of Chapter (Ende des Kapitels)

display_term

nvarchar(8000)

Enthält die Klartextform des Schlüsselworts. Wie bei den Funktionen für den Zugriff auf den Inhalt des Volltextindexes stimmt der angezeigte Begriff aufgrund der Denormalisierungsgrenze u. U. nicht mit dem ursprünglichen Begriff überein. In der Regel ist er jedoch so genau, dass Sie ihn anhand der ursprünglichen Eingabe identifizieren können.

expansion_type

int

Enthält Informationen über die Natur der Erweiterung eines gegebenen Begriffs. Hierbei gibt es folgende Möglichkeiten:

0 = einzelnes Wort, Schreibweise

2 = Flexionserweiterung

4 = Thesauruserweiterung/-ersetzung

Nehmen Sie beispielsweise an, dass der Thesaurus "run" als Erweiterung von jog definiert:

<expansion>

<sub>run</sub>

<sub>jog</sub>

</expansion>

Der Begriff FORMSOF (FREETEXT, run) generiert die folgende Ausgabe:

run (expansion_type=0)

runs (expansion_type=2)

running (expansion_type=2)

ran (expansion_type=2)

jog (expansion_type=4)

source_term

nvarchar(8000)

Der Begriff bzw. der Ausdruck, auf dessen Basis ein gegebener Begriff generiert wird. Beispiel: Aus der Abfrage von '"word breakers" AND stemmers' ergeben sich die folgenden source_term-Werte auf Englisch:

source_term display_term
word breakersword
word breakersbreakers
stemmersstemmers

Hinweise

sys.dm_fts_parser unterstützt die Syntax und Features von Volltextprädikaten, wie CONTAINS und FREETEXT, sowie Funktionen, z. B. CONTAINSTABLE und FREETEXTTABLE.

Verwenden von Unicode zum Analysieren von Sonderzeichen

Wenn Sie eine Abfragezeichenfolge analysieren, verwendet sys.dm_fts_parser die -Sortierung der Datenbank, mit der Sie verbunden sind, sofern Sie die Abfragezeichenfolge nicht als Unicode angeben. Daher kann eine Nicht-Unicode-Zeichenfolge, die Sonderzeichen wie ü oder ç enthält, je nach Sortierung der Datenbank zu einer unerwarteten Ausgabe führen. Um eine Abfragezeichenfolge unabhängig von der Datenbanksortierung zu verarbeiten, setzen Sie der Zeichenfolge das Präfix N voran, d. h. N'Abfragezeichenfolge'.

Weitere Informationen finden Sie unter "C. Anzeigen der Ausgabe einer Zeichenfolge mit Sonderzeichen" später in diesem Thema.

Verwendung von 'sys.dm_fts_parser'

sys.dm_fts_parser kann sehr gut zu Debugzwecken eingesetzt werden. Die wichtigsten Verwendungsszenarios sind:

  • Verdeutlichung der Funktionsweise der Wörtertrennung bei einer gegebenen Eingabe

    Wenn bei einer Abfrage nicht erwartete Ergebnisse ausgegeben werden, kann dies an der Analyse und Trennung der Daten durch die Wörtertrennung liegen. Mit sys.dm_fts_parser können Sie das Ergebnis ermitteln, das eine Wörtertrennung an den Volltextindex übergibt. Außerdem können Sie sehen, bei welchen Begriffen es sich um Stoppwörter handelt, die im Volltextindex nicht gesucht werden. Ob es sich bei einem Wort in einer gegebenen Sprache um ein Stoppwort handelt, hängt davon ab, ob es sich in der Stoppliste befindet, die von dem in der Funktion deklarierten stoplist_id-Wert angegeben wird.

    Beachten Sie auch die Einstellung für die Unterscheidung nach Akzent, die dem Benutzer ermöglicht, unter Berücksichtigung dieser Einstellung zu ermitteln, wie die Wörtertrennung die Eingabe analysiert.

  • Verdeutlichung der Funktionsweise der Wortstammerkennung bei einer gegebenen Eingabe

    Sie können ermitteln, wie ein Abfrageausdruck und seine Stammformen von der Wörtertrennung und der Wortstammerkennung analysiert werden, indem Sie eine CONTAINS- oder eine CONTAINSTABLE-Abfrage mit der folgenden FORMSOF-Klausel angeben:

    FORMSOF( INFLECTIONAL, query_term )
    

    Anhand der Ergebnisse können Sie sehen, welche Begriffe an den Volltextindex übergeben werden.

  • Verdeutlichung der Erweiterung bzw. Ersetzung der gesamten oder eines Teils der Eingabe durch den Thesaurus

    Sie können auch Folgendes angeben:

    FORMSOF( THESAURUS, query_term )
    

    Anhand der Ergebnisse dieser Abfrage können Sie sehen, wie Wörtertrennung und Thesaurus bei dem Abfrageausdruck interagieren. Sie können die vom Thesaurus durchgeführte Erweiterung bzw. Ersetzung sowie die resultierende Abfrage erkennen, die an den Volltextindex gesendet wird.

    Der Benutzer kann auch Folgendes angeben:

    FORMSOF( FREETEXT, query_term )
    

    Die Flexions- und Thesaurusfunktionen werden automatisch ausgeführt.

Des Weiteren ist sys.dm_fts_parser eine nützliche Hilfe, um viele andere Probleme bei Volltextabfragen zu verstehen und zu beheben.

Berechtigungen

Erfordert die Mitgliedschaft in der festen Serverrolle sysadmin sowie Zugriffsberechtigungen für die angegebene Stoppliste.

Beispiele

A. Anzeigen der Ausgabe einer gegebenen Wörtertrennung für ein Schlüsselwort oder einen Ausdruck

Für die Ausgabe des folgenden Beispiels wurden die Wörtertrennung für Englisch mit der LCID 1033 und keine Stoppliste auf die folgende Abfragezeichenfolge angewendet:

The Microsoft business analysis

Die Unterscheidung nach Akzent ist deaktiviert.

SELECT * FROM sys.dm_fts_parser (' "The Microsoft business analysis" ', 1033, 0, 0)

B. Anzeigen der Ausgabe einer gegebenen Wörtertrennung im Kontext der Stopplistenfilterung

Für die Ausgabe des folgenden Beispiels wurden die Wörtertrennung für Englisch mit der LCID 1033 und eine Stoppliste für Englisch mit der ID 77 auf die folgende Abfragezeichenfolge angewendet:

"The Microsoft business analysis" OR "MS revenue"

Die Unterscheidung nach Akzent ist deaktiviert.

SELECT * FROM sys.dm_fts_parser (' "The Microsoft business analysis"  OR " MS revenue" ', 1033, 77, 0)

C. Anzeigen der Ausgabe einer Zeichenfolge mit Sonderzeichen

Im folgenden Beispiel wird Unicode verwendet, um die folgende französische Zeichenfolge zu analysieren:

français

Das Beispiel gibt die LCID für die französische Sprache, 1036, und die ID einer benutzerdefinierten Stoppliste, 5 an. Die Unterscheidung nach Akzent ist aktiviert.

SELECT * FROM sys.dm_fts_parser(N'français', 1036, 5, 1);