sys.dm_fts_parser (Transact-SQL)

Gilt für:SQL Server

Gibt das endgültige Tokenisierungsergebnis zurück, nachdem eine bestimmte Worttrennungs-, Thesaurus- und Stopplistenkombination auf eine Abfragezeichenfolgeneingabe angewendet wurde. Das Tokenisierungsergebnis entspricht der Ausgabe der Volltext-Engine 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 zu analysierende Abfrage. query_string kann eine Zeichenfolgenkette sein, die DIE CONTAINS-Syntax unterstützt. Sie können z. B. Flexionsformen, einen Thesaurus und logische Operatoren einschließen.

lcid

Gebietsschemabezeichner (LCID) des Worttrenners, der für die Analyse query_string verwendet werden soll.

stoplist_id

ID der Stoppliste, falls vorhanden, die von dem von lcid identifizierten Worttrenner 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. Um die Stopplisten-ID für einen Volltextindex für eine bestimmte Tabelle abzurufen, verwenden Sie die sys.fulltext_indexes Katalogsicht.

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 Akzentsensitivität ist...
0 Keine Beachtung von Groß-/Kleinschreibung

Wörter wie "Café" und "Café" werden identisch behandelt.
1 Sensibel

Wörter wie "Café" und "Café" werden unterschiedlich behandelt.

Hinweis

Führen Sie die folgende Transact-SQL-Anweisung aus, um die aktuelle Einstellung dieses Werts für einen Volltextkatalog anzuzeigen: SELECT fulltextcatalogproperty('<catalog_name>', 'AccentSensitivity');.

Zurückgegebene Tabelle

Spaltenname Datentyp BESCHREIBUNG
Schlüsselwort (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 nicht lesbar, aber er ist nützlich, um ein bestimmtes Schlüsselwort mit der Ausgabe zu zuordnen, die von anderen dynamischen Verwaltungssichten zurückgegeben wird, die den Inhalt eines Volltextindexes zurückgeben, z. B. sys.dm_fts_index_keywords und sys.dm_fts_index_keywords_by_document.

Hinweis:0xFF stellt das Sonderzeichen dar, das das Ende einer Datei oder eines Datasets angibt.
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:

1: Server
2: Datenbank
3: DATENBANK
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:

1 für multi
1 für million
2 für 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:

1 für SQL
2 für Server
3 für query
4 für 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
- Rauschwort
- Satzende
- Absatzende
- Kapitelende
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 = Einzelwort-Großschreibung
2 = Inflectional expansion
4 = Thesauruserweiterung/-ersatz

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. Eine Abfrage für den '"word breakers" AND stemmers' erzeugt beispielsweise die folgenden source_term Werte in englischer Sprache:

word breakers für die display_termword
word breakers für die display_termbreakers
stemmers für die display_termstemmers

Bemerkungen

sys.dm_fts_parser unterstützt die Syntax und Die Features von Volltext-Prädikaten wie CONTAINS und FREETEXT sowie Funktionen wie CONTAINSTABLE und FREETEXTTABLE.

Verwenden von Unicode zum Analysieren von Sonderzeichen

Wenn Sie eine Abfragezeichenfolge analysieren, verwendet die Sortierung der Datenbank, sys.dm_fts_parser mit der Sie verbunden sind, es sei denn, Sie geben die Abfragezeichenfolge als Unicode an. Daher kann die Ausgabe für eine Nicht-Unicode-Zeichenfolge, die Sonderzeichen wie ü oder ç enthält, je nach Sortierung der Datenbank unerwartet sein. Um eine Abfragezeichenfolge unabhängig von der Datenbanksortierung zu verarbeiten, präfixieren Sie die Zeichenfolge mit N, d. h. N'query_string'.

Weitere Informationen finden Sie weiter unten in diesem Artikel unter C. Anzeigen der Ausgabe einer Zeichenfolge, die Sonderzeichen enthält .

Wann sollte sys.dm_fts_parser verwendet werden?

sys.dm_fts_parser kann für Debuggingzwecke leistungsfähig sein. 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_parserermitteln Sie das Ergebnis, das eine Worttrennung an den Volltextindex übergibt. Darüber hinaus können Sie sehen, welche Begriffe Stoppwörter sind, die nicht im Volltextindex durchsucht werden. Ob ein Begriff ein Stoppwort für eine bestimmte Sprache ist, hängt davon ab, ob er sich in der Stoppliste befindet, die durch den in der Funktion deklarierten stoplist_id-Wert angegeben wird.

    Mit dem Flag "Akzentsensitivität" können Sie sehen, wie der Worttrenner die Eingabe analysiert, wobei die Informationen zur Akzentsensitivität berücksichtigt werden.

  • 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

    Du kannst 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.

    Wenn der Benutzer Folgendes ausgibt:

    FORMSOF( FREETEXT, query_term )
    

    Die Funktionen "Inflectional" und "Thesaurus" erfolgen automatisch.

Zusätzlich zu den vorherigen Verwendungsszenarien kann es wesentlich dazu beitragen, sys.dm_fts_parser viele andere Probleme mit Volltextabfragen zu verstehen und zu beheben.

Berechtigungen

Erfordert die CREATE FULLTEXT CATALOG-Berechtigung und Zugriffsrechte für die angegebene Stoppliste.

Beispiele

A. Anzeigen der Ausgabe eines bestimmten Worttrenners 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 bestimmten Worttrennung im Kontext der Filterung von Stopplisten

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, die Sonderzeichen enthält

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);

Weitere Informationen

Nächste Schritte