sys.dm_fts_parser (Transact-SQL)
S'applique à : SQL Server
Retourne le résultat final de la tokenisation après l’application d’un analyseur de mots donné, du dictionnaire des synonymes et de la combinaison de mots vides à une entrée de chaîne de requête. Le résultat de la segmentation du texte en unités lexicales équivaut à la sortie du Moteur d'indexation et de recherche en texte intégral pour la chaîne de requête spécifiée.
sys.dm_fts_parser
est une fonction de gestion dynamique.
Syntaxe
sys.dm_fts_parser ( 'query_string' , lcid , stoplist_id , accent_sensitivity )
Arguments
query_string
Requête à analyser. query_string peut être une chaîne de chaînes prise en charge de la syntaxe CONTAINS. Par exemple, vous pouvez inclure des formes fléchies, un dictionnaire des synonymes et des opérateurs logiques.
lcid
Identificateur de paramètres régionaux (LCID) de l’analyseur de mots à utiliser pour analyser query_string.
stoplist_id
ID de la liste de mots, le cas échéant, à utiliser par le disjoncteur de mots identifié par lcid. stoplist_id est int. Si vous spécifiez « NULL », aucune liste de mots vides n’est utilisée. Si vous spécifiez 0, la liste de mots vides système est utilisée.
Un ID de liste de mots vides est unique dans une base de données. Pour obtenir l’ID de liste de mots vides d’un index de recherche en texte intégral sur une table donnée, utilisez l’affichage catalogue sys.fulltext_indexes.
accent_sensitivity
Valeur booléenne qui indique si la recherche en texte intégral respecte ou non les signes diacritiques. accent_sensitivity est bit, avec l’une des valeurs suivantes :
Valeur | La sensibilité aux accents est... |
---|---|
0 | Insensible Les mots tels que « café » et « cafe » sont traités de la même manière. |
1 | Sensible Les mots tels que « café » et « cafe » ne sont pas traités de la même manière. |
Remarque
Pour afficher le paramètre actuel de cette valeur pour un catalogue de texte intégral, exécutez l’instruction Transact-SQL suivante : SELECT fulltextcatalogproperty('<catalog_name>', 'AccentSensitivity');
.
Table retournée
Nom de la colonne | Type de données | Description |
---|---|---|
mot clé | varbinary(128) | Représentation hexadécimale d'un mot clé donné retournée par un analyseur lexical. Cette représentation permet de stocker le mot clé dans l'index de recherche en texte intégral. Cette valeur n’est pas lisible par l’homme, mais il est utile de relier un mot clé donné à la sortie retournée par d’autres vues de gestion dynamique qui retournent le contenu d’un index de recherche en texte intégral, comme sys.dm_fts_index_keywords et sys.dm_fts_index_keywords_by_document. Remarque : 0xFF représente le caractère spécial qui indique la fin d’un fichier ou d’un jeu de données. |
group_id | int | Contient une valeur entière qui est utile pour différencier le groupe logique à partir duquel un terme donné a été généré. Par exemple, « Server AND DB OR FORMSOF(THESAURUS, DB)" » produit les valeurs group_id suivantes en anglais :1 : Serveur 2 : Base de données 3 : Base de données |
phrase_id | int | Contient une valeur entière qui est utile pour différencier les cas dans lesquels les formes alternatives de mots composés, tels que le texte intégral, sont émises par l'analyseur lexical. Il peut arriver qu'en présence de mots composés (« multi-million ») des formes alternatives soient émises par l'analyseur lexical. Ces formes alternatives (expressions) doivent parfois être différenciées. Par exemple, « multi-million » produit les valeurs phrase_id suivantes en anglais :1 pour multi 1 pour million 2 pour multimillion |
occurrence | int | Indique l'ordre de chaque terme dans le résultat de l'analyse. Par exemple, pour l'expression « SQL Server query processor », l'occurrence contiendrait les valeurs d'occurrence suivantes pour les termes de l'expression, en anglais :1 pour SQL 2 pour Server 3 pour query 4 pour processor |
special_term | nvarchar(4000) | Contient des informations sur les caractéristiques du terme émis par l'analyseur lexical, informations qui peuvent être l'une des suivantes : - Correspondance exacte - Mot de bruit - Fin de phrase - Fin du paragraphe - Fin du chapitre |
display_term | nvarchar(4000) | Contient la forme explicite du mot clé. Comme avec les fonctions conçues pour accéder au contenu de l'index de recherche en texte intégral, ce terme affiché peut ne pas être identique au terme d'origine en raison des limitations inhérentes à la dénormalisation. Toutefois, il doit être suffisamment précis pour vous permettre de l'identifier à partir de l'entrée d'origine. |
expansion_type | int | Contient des informations sur la nature de l'expansion d'un terme donné, informations qui peuvent être l'une des suivantes : 0 = Cas de mot unique 2 = Expansion inflectionnelle 4 = Expansion/remplacement du dictionnaire des synonymes Par exemple, considérez un cas dans lequel le dictionnaire des synonymes définit run comme expansion de jog :<expansion> <sub>run</sub> <sub>jog</sub> </expansion> Le terme FORMSOF (FREETEXT, run) génère la sortie suivante :run avec expansion_type = 0runs avec expansion_type = 2running avec expansion_type = 2ran avec expansion_type = 2jog avec expansion_type = 4 |
source_term | nvarchar(4000) | Terme ou expression à partir duquel un terme donné à été généré ou analysé. Par exemple, une requête sur le '"word breakers" AND stemmers' produit les valeurs de source_term suivantes en anglais :word breakers pour le display_term word word breakers pour le display_term breakers stemmers pour le display_term stemmers |
Notes
sys.dm_fts_parser
prend en charge la syntaxe et les fonctionnalités des prédicats de texte intégral, tels que CONTAINS et FREETEXT, et les fonctions, telles que CONTAINSTABLE et FREETEXTTABLE.
Utiliser Unicode pour analyser des caractères spéciaux
Lorsque vous analysez une chaîne de requête, sys.dm_fts_parser
utilise le classement de la base de données à laquelle vous êtes connecté, sauf si vous spécifiez la chaîne de requête en tant qu’Unicode. Par conséquent, pour une chaîne non Unicode qui contient des caractères spéciaux, tels que ü ou ç, la sortie peut être inattendue, en fonction du classement de la base de données. Pour traiter une chaîne de requête indépendamment du classement de base de données, préfixez la chaîne avec N
, autrement dit, N'
query_string'
.
Pour plus d’informations, consultez C. Afficher la sortie d’une chaîne qui contient des caractères spéciaux plus loin dans cet article.
Quand utiliser sys.dm_fts_parser
sys.dm_fts_parser
peut être puissant à des fins de débogage. Certaines utilisations parmi les plus fréquents sont décrites ci-dessous.
Pour comprendre comment un analyseur lexical donné traite une entrée donnée
Lorsqu'une requête retourne des résultats inattendus, une cause probable est la manière dont l'analyseur lexical analyse et décompose les données. En utilisant
sys.dm_fts_parser
, vous découvrez le résultat qu’un analyseur de mots passe à l’index de recherche en texte intégral. En outre, vous pouvez voir quels termes sont des mots vides, qui ne sont pas recherchés dans l’index de recherche en texte intégral. Si un terme est un mot vide pour une langue donnée dépend du fait qu’il se trouve dans la liste de mots vides spécifié par la valeur stoplist_id déclarée dans la fonction.L’indicateur de sensibilité aux accents vous permet de voir comment l’analyseur de mots analyse l’entrée, en ayant à l’esprit ses informations de confidentialité d’accentuation.
Pour comprendre le fonctionnement du générateur de formes dérivées sur une entrée donnée
Vous pouvez déterminer comment l'analyseur lexical et le générateur de formes dérivées analysent un terme de requête et ses formes dérivées en spécifiant une requête CONTAINS ou CONTAINSTABLE qui contient la clause FORMSOF suivante :
FORMSOF( INFLECTIONAL, query_term )
Les résultats vous indiquent les termes qui sont passés à l'index de recherche en texte intégral.
Pour comprendre comment le dictionnaire des synonymes étend ou remplace tout ou partie de l'entrée
Vous pouvez également spécifier :
FORMSOF( THESAURUS, query_term )
Les résultats de cette requête montrent comment l'analyseur lexical et le dictionnaire des synonymes interagissent pour le terme de requête. Vous pouvez voir l'expansion ou les remplacements du dictionnaire des synonymes et identifier la requête obtenue et effectivement émise sur l'index de recherche en texte intégral.
Si l’utilisateur rencontre des problèmes :
FORMSOF( FREETEXT, query_term )
Les fonctionnalités d’inflection et de dictionnaire des synonymes ont lieu automatiquement.
Outre les scénarios d’utilisation précédents, sys.dm_fts_parser
vous pouvez comprendre et résoudre de nombreux autres problèmes liés à la requête en texte intégral.
autorisations
Nécessite l’autorisation CREATE FULLTEXT CATALOG et les droits d’accès à la liste de mots vides spécifié.
Exemples
R. Afficher la sortie d’un analyseur de mots donné pour un mot clé ou une expression
L'exemple suivant retourne la sortie produite par l'analyseur lexical anglais, dont le LCID est 1033, utilisé sans liste de mots vides sur la chaîne de requête suivante :
The Microsoft business analysis
Le respect des accents est désactivé.
SELECT * FROM sys.dm_fts_parser (' "The Microsoft business analysis" ', 1033, 0, 0);
B. Afficher la sortie d’un analyseur de mots donné dans le contexte du filtrage de liste de mots vides
L'exemple suivant retourne la sortie produite par l'analyseur lexical anglais, dont le LCID est 1033, utilisé avec une liste de mots vides anglaise, dont l'ID est 77, sur la chaîne de requête suivante :
"The Microsoft business analysis" OR "MS revenue"
Le respect des accents est désactivé.
SELECT * FROM sys.dm_fts_parser (' "The Microsoft business analysis" OR " MS revenue" ', 1033, 77, 0);
C. Afficher la sortie d’une chaîne qui contient des caractères spéciaux
L'exemple suivant utilise Unicode pour analyser la chaîne suivante :
français
L'exemple spécifie le LCID pour la langue française, 1036
et l'ID d'une liste de mots vides définie par l'utilisateur, 5
Le respect des accents est activé.
SELECT * FROM sys.dm_fts_parser(N'français', 1036, 5, 1);
Voir aussi
- Fonctions et vues de gestion dynamique de recherche en texte intégral et de recherche sémantique (Transact-SQL)
- Recherche en texte intégral
- Éléments sécurisables
Étapes suivantes
- Configurer et gérer les analyseurs lexicaux et générateurs de formes dérivées pour la recherche
- Configurer et gérer les fichiers de dictionnaire des synonymes pour la recherche en texte intégral
- Configurer et gérer les mots vides et listes de mots vides pour la recherche en texte intégral
- Exécuter une requête avec une recherche en texte intégral