Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server
Base de données Azure SQL
Azure SQL Managed Instance
Ils effectuent une analyse linguistique de l'ensemble des données indexées en texte intégral. L’analyse linguistique effectue les deux opérations suivantes :
Recherche des limites de mots (analyse lexicale). Le analyseur lexical identifie des mots individuels en déterminant l’emplacement des limites de mots d’après les règles lexicales de cette langue. Chaque mot (également appelé token) est inséré dans l’index de texte intégral sous une forme compressée afin d’en réduire la taille.
Conjugaison des verbes (recherche de radical). Le générateur de formes dérivées génère des formes flexionnelles d’un mot particulier selon les règles spécifiques d’une langue (par exemple, « running », « ran » et « runner » constituent différentes formes du mot « run »).
Les analyseurs lexicaux et générateurs de formes dérivées sont propres aux langues
Les analyseurs lexicaux et les générateurs de formes dérivées sont spécifiques à la langue, et les règles de l'analyse linguistique diffèrent selon les langues. L’utilisation d’analyseurs lexicaux propres aux langues permet d’obtenir des termes plus précis pour chaque langue.
Pour utiliser les analyseurs lexicaux et générateurs de formes dérivées fournis pour toutes les langues prises en charge par Moteur de base de données SQL Server, vous n’avez en général aucune action à effectuer.
Là où il existe un analyseur de mots pour la famille de langues, mais pas pour la sous-langue spécifique, la langue principale est utilisée. Par exemple, le segmenteur de mots français est utilisé pour traiter le texte en français canadien.
Si aucun analyseur lexical n'est disponible pour une langue particulière, l'analyseur lexical en langue neutre est utilisé. Avec le segmenteur de mots neutre, les mots sont séparés au niveau de caractères neutres, comme les espaces et les signes de ponctuation.
Obtenir la liste des langues prises en charge
Pour voir la liste des langues prises en charge par Full-Text Recherche, utilisez la Transact-SQL instruction suivante. La présence d’une langue dans cette liste indique que des segmenteurs de mots sont enregistrés pour cette langue.
SELECT *
FROM sys.fulltext_languages;
Obtenir la liste des analyseurs lexicaux inscrits
Pour que la recherche en texte intégral utilise les analyseurs lexicaux pour une langue, ceux-ci doivent être inscrits. Pour les analyseurs lexicaux enregistrés, les ressources linguistiques associées sont également mises à la disposition des opérations d’indexation et d’interrogation en texte intégral. Ces ressources comprennent des générateurs de formes fléchies, des mots parasites (mots vides) et des fichiers de dictionnaire des synonymes.
Pour afficher la liste des composants de séparation de mots enregistrés, utilisez l’instruction suivante.
EXECUTE sp_help_fulltext_system_components 'wordbreaker';
GO
Pour plus d’informations, consultez sp_help_fulltext_system_components.
Si vous ajoutez ou supprimez un segmenteur de mots
Si vous ajoutez, supprimez ou modifiez un séparateur de mots, vous devez mettre à jour la liste des identificateurs de paramètres régionaux Microsoft Windows (LCID) pris en charge pour l'indexation et l'interrogation en texte intégral. Pour plus d’informations, consultez Personnaliser les filtres et les analyseurs de mots.
Définir l’option de langue de texte intégral par défaut
Dans le cas d’une version localisée de SQL Server, le programme d’installation de SQL Server définit l’option default full-text en fonction de la langue du serveur s’il existe une correspondance appropriée. Pour une version non localisée de SQL Server, l’anglais est la langue de texte intégral par défaut .
Quand vous créez ou modifiez un index de recherche en texte intégral, vous pouvez spécifier une langue différente pour chaque colonne indexée de texte intégral. Si aucune langue n’est spécifiée pour une colonne, la valeur par défaut est déterminée par l’option de configuration Langue de texte intégral par défaut.
Remarque
Toutes les colonnes répertoriées dans une seule clause de fonction de requête de texte intégral doivent utiliser la même langue, sauf si l’option LANGUAGE est spécifiée dans la requête. La langue utilisée pour la colonne d’index de recherche en texte intégral faisant l’objet d’une requête détermine l’analyse linguistique menée sur les arguments des prédicats de requête de texte intégral (CONTAINS et FREETEXT) et des fonctions de requête de texte intégral (CONTAINSTABLE et FREETEXTTABLE).
Choisir la langue pour une colonne indexée
Lorsque vous créez un index en texte intégral, spécifiez une langue pour chaque colonne indexée. Si aucune langue n’est spécifiée pour une colonne, la langue par défaut du système est utilisée. La langue d'une colonne détermine l'analyseur lexical et le générateur de formes dérivées utilisés pour indexer cette colonne. En outre, le fichier de dictionnaire des synonymes de cette langue est utilisé par les requêtes de texte intégral sur la colonne.
Plusieurs aspects doivent être pris en considération pour le choix de la langue d'une colonne lors de la création d'un index de recherche en texte intégral. Ces considérations portent sur la façon dont votre texte est découpé en unités lexicales, puis indexé par le moteur de texte intégral. Pour plus d’informations, voir Choisir une langue lors de la création d’un index en texte intégral.
Pour afficher la langue du séparateur de mots de colonnes spécifiques, exécutez l’instruction suivante.
SELECT language_id AS 'LCID'
FROM sys.fulltext_index_columns;
Pour plus d’informations, consultez sys.fulltext_index_columns.
Dépanner les erreurs de délai d’attente de l’analyse lexicale
Une erreur d’expiration du délai de segmentation des mots peut se produire dans différentes situations. Pour plus d’informations sur ces situations et sur la façon de répondre à chaque situation, consultez MSSQLSERVER_30053.
Informations sur l’erreur MSSQLSERVER_30053
| Propriété | Valeur |
|---|---|
| Nom du produit | Serveur SQL |
| ID de l’événement | 30053 |
| Source de l’événement | MSSQLSERVER |
| Composant | SQLEngine |
| Nom symbolique | FTXT_QUERY_E_WORDBREAKINGTIMEOUT |
| Texte du message | L'analyse lexicale a expiré pour la chaîne de requête de texte intégral. Cela peut se produire si l'analyseur lexical a mis beaucoup de temps à traiter la chaîne de requête de texte intégral ou si un grand nombre de requêtes sont exécutées sur le serveur. Essayez de réexécuter la requête en condition de charge moins élevée. |
Explication
Une erreur de dépassement de délai de l'analyse lexicale peut se produire dans les cas de figure suivants :
L'analyseur lexical du langage de requête est configuré de manière incorrecte. Par exemple, ses réglages de registre sont incorrects.
Le segmentateur de mots fonctionne mal pour une chaîne de requête donnée.
L'analyseur lexical retourne une trop grande quantité de données pour une chaîne de requête spécifique. Les données excédentaires sont considérées comme une attaque de dépassement de mémoire tampon potentielle, ce qui entraîne l’arrêt du processus de démon de filtre (
fdhost.exe), qui héberge les services d’analyse lexicale.La configuration du processus de démon de filtre est incorrecte.
Les problèmes de configuration les plus courants sont les suivants : expiration du mot de passe ou existence d'une stratégie de domaine qui empêche la connexion du compte de démon de filtre.
Une charge de traitement de requêtes très importante s'exécute sur l'instance de serveur. Par exemple, le word breaker a mis beaucoup de temps à traiter la chaîne de requêtes en texte complet, ou un grand nombre de requêtes sont en cours sur le serveur. C’est la cause la moins probable.
Action utilisateur
Sélectionnez l'action utilisateur appropriée en fonction de la cause probable du délai d'attente, comme suit :
| Cause probable | Action utilisateur |
|---|---|
| L'analyseur lexical du langage de requête est configuré de manière incorrecte. | Si vous utilisez un analyseur de mots tiers, il se peut qu’il soit incorrectement inscrit auprès du système d’exploitation. Dans ce cas, réenregistrez l'analyseur lexical. Pour plus d’informations, consultez Rétablir les séparateurs de mots utilisés par la recherche en texte intégral à la version précédente. |
| Le segmentateur de mots fonctionne mal pour une chaîne de requête donnée. | Si le séparateur de mots est pris en charge par le Moteur de base de données, contactez le service clientèle et le support Microsoft. |
| L'analyseur lexical retourne une trop grande quantité de données pour une chaîne de requête spécifique. | Si le séparateur de mots est pris en charge par le Moteur de base de données, contactez le support technique et le service clientèle de Microsoft. |
| La configuration du processus de démon de filtre est incorrecte. | Vérifiez que vous utilisez le mot de passe actuel et qu’une stratégie de domaine n’empêche pas le compte de démon de filtre de se connecter. |
| Une charge de traitement de requêtes très importante s'exécute sur l'instance de serveur. | Essayez de réexécuter la requête en condition de charge moins élevée. |
Comprendre l’impact des analyseurs lexicaux mis à jour
Chaque version du Moteur de base de données peut inclure des disjoncteurs de mots mis à jour avec des règles linguistiques révisées. Ces séparateurs de mots mis à jour peuvent se comporter différemment des séparateurs de mots des index de texte intégral importés à partir de versions antérieures du Moteur de base de données.
Cela est significatif si un catalogue en texte intégral a été importé lors de la mise à jour d’une base de données vers la version actuelle du Moteur de base de données. Une ou plusieurs langues utilisées par les index de recherche en texte intégral dans le catalogue de texte intégral peuvent maintenant être associées aux nouveaux analyseurs lexicaux. Pour plus d’informations, consultez Mise à niveau de la fonction de recherche en texte intégral.
Contenu connexe
- CREATE FULLTEXT INDEX (Transact-SQL)
- ALTER FULLTEXT INDEX (Transact-SQL)
- Analyseur de mots de texte intégral et fichiers binaires du générateur de formes dérivées
- Personnaliser les filtres et les analyseurs de mots
- Configurer et gérer les mots vides et listes de mots vides pour la recherche en texte intégral