Freigeben über


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.

Gilt für: SQL Server (SQL Server 2008 bis aktuelle Version).

Syntax

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

Argumente

  • query_string
    Die zu analysierende Abfrage. 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
    Die ID der Stoppliste, sofern vorhanden, für die Wörtertrennung, die von lcid angegeben wird. stoplist_id ist vom Datentyp 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 vom Datentyp bit und weist einen der folgenden Werte auf:

    Wert

    Unterscheidung nach Akzent…

    0

    Keine Unterscheidung

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

    1

    Ja

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

    Hinweis

    Führen Sie die folgende Transact-SQL-Anweisung aus, um die aktuelle Einstellung für diesen Wert für einen Volltextkatalog anzuzeigen: SELECT fulltextcatalogproperty('catalog_name', '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.

Hinweis

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

1

Server

2

DB

3

DB

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 occurrence-Werte für die Begriffe im Ausdruck (auf Englisch):

occurrence

display_term

1

SQL

2

Server

3

query

4

processor

special_term

nvarchar(4000)

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

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(4000)

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 Beschaffenheit 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 mit expansion_type = 0

runs mit expansion_type = 2

running mit expansion_type = 2

ran mit expansion_type = 2

jog mit expansion_type = 4

source_term

nvarchar(4000)

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

source_term

display_term

Wörtertrennungen

word

Wörtertrennungen

breakers

Wortstammerkennung

Wortstammerkennung

Hinweise

sys.dm_fts_parser unterstützt die Syntax und Funktionen 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'query_string'.

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 unerwartete Ergebnisse zurückgegeben werden, kann dies an der Analyse und Trennung der Daten durch die Wörtertrennung liegen. Mithilfe von 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 )
    

    Die Ergebnisse dieser Abfrage veranschaulichen die Interaktion der Wörtertrennung und des Thesaurus für den Abfrageausdruck. Sie können den Ausdruck oder die Ersetzungen im Thesaurus anzeigen und die resultierende Abfrage identifizieren, die tatsächlich für den Volltextindex verwendet wird.

    Der Benutzer kann auch Folgendes angeben:

    FORMSOF( FREETEXT, query_term )
    

    Die Flexions- und Thesaurusfunktionen werden automatisch ausgeführt.

Des Weiteren kann sys.dm_fts_parser von großem Nutzen sein, 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 angegebenen 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" ', 1031, 0, 0);

B.Anzeigen der Ausgabe einer angegebenen 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" ', 1031, 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);

Siehe auch

Verweis

Dynamische Verwaltungssichten und -funktionen für Volltextsuche und semantische Suche (Transact-SQL)

Konzepte

Volltextsuche (SQL Server)

Konfigurieren und Verwalten von Wörtertrennungen und Wortstammerkennungen für die Suche

Konfigurieren und Verwalten von Thesaurusdateien für die Volltextsuche

Konfigurieren und Verwalten von Stoppwörtern und Stopplisten für Volltextsuche

Abfragen mit Volltextsuche

Abfragen mit Volltextsuche

Sicherungsfähige Elemente