sys.dm_fts_parser (Transact-SQL)
Retourne le dernier résultat de segmentation du texte en unités lexicales après avoir appliqué une combinaison donnée d'analyseur lexical, de dictionnaire des synonymes et de liste de mots vides à l'entrée d'une 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 type string prise en charge par la syntaxe de 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 lexical à utiliser pour analyser query_string.stoplist_id
ID de la liste de mots vides, le cas échéant, que l'analyseur lexical identifié par lcid doit utiliser. stoplist_id est de type 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 la liste de mots vides pour 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 de type bit, avec l'une des valeurs suivantes :Valeur
Respecte les accents ?
0
Non
Les mots tels que « café » et « cafe » sont traités de la même manière.
1
Oui
Les mots tels que « café » et « cafe » ne sont pas traités de la même manière.
[!REMARQUE]
Pour consulter le paramétrage 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 |
---|---|---|
keyword |
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 explicite, mais elle permet d'associer 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, tel que sys.dm_fts_index_keywords et sys.dm_fts_index_keywords_by_document.
Remarque
OxFF représente le caractère spécial qui indique la fin d'un fichier ou d'un dataset.
|
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 :
group_id display_term
1Serveur
2BdD
3BdD
|
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 :
phrase_id display_term
1 multi
1 million
2 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 », occurrence contiendrait les valeurs occurrence suivantes pour les termes de l'expression, en anglais :
occurrence display_term
1 SQL
2 Server
3 query
4 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 : Concordance exacte Mot parasite Fin de phrase Fin de paragraphe Fin de 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 fléchie 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=0 runs with expansion_type=2 running with expansion_type=2 ran with expansion_type=2 jog with 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 'word breakers" AND stemmers' produit les valeurs source_term suivantes, en anglais :
source_term display_term
analyseurs lexicauxlexicaux
analyseurs lexicauxanalyseurs
générateurs de formes dérivéesgénérateurs de formes dérivées
|
Notes
sys.dm_fts_parser prend en charge la syntaxe et les fonctionnalités de prédicats de texte intégral, tels que CONTAINS et FREETEXT, et de fonctions telles que CONTAINSTABLE et FREETEXTTABLE.
Utilisation d'Unicode pour l'analyse 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 comme chaîne Unicode. Par conséquent, la sortie peut être inattendue pour une chaîne non-Unicode qui contient caractères spéciaux, tels que ü ou ç, selon le classement de la base de données. Pour traiter indépendamment une chaîne de requête 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. Affichage de la sortie d'une chaîne qui contient des caractères spéciaux », plus loin dans cette rubrique.
Quand utiliser sys.dm_fts_parser
sys.dm_fts_parser peut être très puissant dans le cadre d'un 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 lexical passe à l'index de recherche en texte intégral. En outre, vous pouvez voir quels sont les termes utilisés en tant que mots vides, qui ne sont pas recherchés dans l'index de recherche en texte intégral. Un terme est un mot vide pour une langue donnée s'il figure dans la liste de mots vides spécifiée par la valeur stoplist_id déclarée dans la fonction.
Notez également l'indicateur de respect des accents, qui permet à l'utilisateur de voir comment l'analyseur lexical analyse l'entrée en ayant à l'esprit les informations de respect des accents.
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.
Notez que si l'utilisateur émet :
FORMSOF( FREETEXT, query_term )
les fonctionnalités des formes fléchies et du dictionnaire des synonymes opèrent automatiquement.
En plus des scénarios d'utilisation précédents, sys.dm_fts_parser peut être d'une aide précieuse pour comprendre et résoudre nombre d'autres problèmes liés à la requête de texte intégral.
Autorisations
Requiert l'appartenance au rôle serveur fixe sysadmin et des droits d'accès à la liste de mots vides spécifiée.
Exemples
A.Affichage de la sortie d'un analyseur lexical 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.Affichage de la sortie d'un analyseur lexical donné dans le contexte de 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.Affichage de 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
Référence
Concepts
Recherche en texte intégral (SQL Server)
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