Modifications importantes apportées à la recherche en texte intégral

Cette rubrique décrit les modifications importantes apportées à la recherche en texte intégral. Ces modifications peuvent interrompre les applications, scripts ou fonctionnalités fondés sur les versions antérieures de SQL Server. Il se peut que vous rencontriez ces problèmes lors d'une mise à niveau. Pour plus d'informations, consultez Utiliser le Conseiller de mise à niveau pour la préparation des mises à niveau.

Modifications importantes de la recherche en texte intégral dans SQL Server 2012

Classement modifié pour la colonne de nom dans sys.fulltext_languages

Le classement de la colonne de nom de la langue dans l'affichage catalogue sys.fulltext_languages (Transact-SQL) est passé d'un classement fixe de la base de données de ressources au classement par défaut sélectionné pour l'instance de SQL Server. Cette modification permet de comparer les valeurs dans la colonne de nom lorsque vous joignez la vue sys.syslanguages (Transact-SQL) avec sys.fulltext_languages. Par exemple, vous pouvez définir des requêtes toutes les bases de données dont la langue de texte intégral par défaut est différente de la langue de la base de données par défaut.

Dernières modifications dans la recherche en texte intégral dans SQL Server 2008

Les modifications décrites ci-dessous s'appliquent à la recherche en texte intégral entre SQL Server 2005 et SQL Server 2008 et les versions ultérieures.

Fonctionnalité

Scénario

SQL Server 2005

SQL Server 2008 et versions ultérieures

CONTAINSTABLE avec des types définis par l'utilisateur

La clé de texte intégral est un type défini par l'utilisateur SQL Server, par exemple MyType = char(1).

La clé retournée est du type assigné au type défini par l'utilisateur.

Dans l'exemple, il s'agirait de char(1).

La clé retournée est du type défini par l'utilisateur. Dans l'exemple, il s'agirait de MyType.

Paramètre top_n_by_rank (des instructions CONTAINSTABLE et FREETEXTTABLE Transact-SQL)

Requêtes top_n_by_rank qui utilisent 0 comme paramètre.

Échec avec un message d'erreur qui signale que vous devez utiliser une valeur supérieure à zéro.

Réussite, retourne zéro ligne.

CONTAINSTABLE et ItemCount

Suppression de lignes de table de base avant de pousser les modifications vers MSSearch.

CONTAINSTABLE retourne un enregistrement fantôme. ItemCount n'est pas modifié.

CONTAINSTABLE ne retourne pas d'enregistrements fantômes.

ItemCount

La table contient des documents ou des colonnes de type Null.

En plus des documents indexés, les documents qui sont Null ou qui ont des types Null sont comptés dans la valeur ItemCount.

Seuls les documents indexés sont comptés dans la valeur ItemCount.

Catalogue ItemCount

Colonne blob avec une extension NULL.

Comptée dans ItemCount du catalogue

Non comptée dans ItemCount du catalogue.

UniqueKeyCount

Interrogation d'un nombre de clés uniques d'un catalogue, par exemple deux tables (table1 et table2) chacune avec trois mots : word1, word2 et word3.

UniqueKeyCount = 9. Le tableau suivant résume comment cette valeur est atteinte :

table1 = 3

EOF pour l'index de recherche en texte intégral de table1 = 1

table2 = 3

EOF pour l'index de recherche en texte intégral de table2 = 1

catalogue de texte intégral = 1

Pour chaque table, UniqueKeyCount est le nombre de mots clés distincts + 1 (0xFF). Cela ne traite PAS les mêmes mots dans > 1 doc comme nouvelle clé unique.

Pour un catalogue, UniqueKeyCount est la somme de UniqueKeyCount de chacune des tables sous le catalogue. Les mots identiques de tables différentes sont traités comme des clés uniques. Dans ce cas, le nombre de clés uniques est 8.

Option de niveau serveur precompute rank

Optimisation des performances des requêtes FREETEXTTABLE.

Lorsque cette option est définie sur 1, les requêtes FREETEXTTABLE précisant le paramètre top_n_by_rank se basent sur des données de classement précalculées qui sont stockées dans des catalogues de texte intégral.

Non prise en charge.

sp_fulltext_pendingchanges lors de la mise à jour d'une colonne clé

Mise à jour de la colonne clé de texte intégral sur une ligne d'une table de 2 lignes et exécution de sp_fulltext_pendingchanges.

Les deux lignes apparaissent.

Une seule ligne apparaît.

Fonctions inline

Fonctions inline avec un opérateur de texte intégral

Retournent un message d'erreur.

Retournent les lignes pertinentes.

sp_fulltext_database

Activation ou désactivation de la recherche en texte intégral à l'aide de sp_fulltext_database.

Aucun résultat n'est retourné pour les requêtes de texte intégral. Si le texte intégral est désactivé pour la base de données, les opérations de texte intégral ne sont pas autorisées.

Retourne des résultats pour les requêtes de texte intégral et les opérations de texte intégral sont autorisées même si le texte intégral est désactivé pour la base de données.

Mots vides spécifiques aux paramètres régionaux

Requêtes dans des variantesd'un langage parent spécifiques aux paramètres régionaux, tel que le français de Belgique et le français du Canada.

Les requêtes dans des variantesspécifiques aux paramètres régionaux sont traitées par les composants (analyseurs lexicaux, générateurs de formes dérivées et mots vides) de leur langage parent. Par exemple, les composants Français (France) sont utilisés pour analyser le Français (Belgique).

Vous devez ajouter des mots vides de manière explicite pour chaque identificateur de paramètres régionaux (LCID). Par exemple, vous devriez spécifier un LCID pour la Belgique, le Canada et la France.

Processus d'indexation par radicaux du dictionnaire des synonymes

Utilisation du dictionnaire des synonymes et des formes flexionnelles (indexation par radicaux).

Un mot du dictionnaire des synonymes est ramené automatiquement à son radical après son expansion.

Si vous souhaitez que la forme radicale figure dans l'expansion, vous devez l'ajouter de manière explicite.

Chemin d'accès au catalogue de texte intégral et groupe de fichiers

Utilisation des catalogues de texte intégral.

Chaque catalogue de texte intégral a un chemin d'accès physique et appartient à un groupe de fichiers. Il est traité en tant que fichier de base de données.

Un catalogue de texte intégral est un objet virtuel qui n'appartient à aucun groupe de fichiers. Un catalogue de texte intégral est un concept logique qui fait référence à un groupe d'index de texte intégral.

[!REMARQUE]

Les instructions DDL Transact-SQL SQL Server 2005 qui spécifient des catalogues de texte intégral fonctionnent correctement.

sys.fulltext_catalogs

Utilisation de path, data_space_id et de file_id de cet affichage catalogue.

Ces colonnes retournent une valeur spécifique.

Ces colonnes retournent NULL car le catalogue de texte intégral ne se trouve plus dans le système de fichiers.

sys.sysfulltextcatalogs

Utilisation de la colonne path de cette table système déconseillée.

Retourne le chemin d'accès de système de fichiers du catalogue de texte intégral.

Retourne NULL car le catalogue de texte intégral ne se trouve plus dans le système de fichiers.

sp_help_fulltext_catalogs

sp_help_fulltext_catalogs_cursor

Utilisation de la colonne PATH de ces procédures stockées déconseillées.

Retourne le chemin d'accès de système de fichiers du catalogue de texte intégral.

Retourne NULL car le catalogue de texte intégral ne se trouve plus dans le système de fichiers.

sp_help_fulltext_catalog_components

Utilisation de sp_help_fulltext_catalog_components de cette procédure stockée.

Retourne la liste de tous les composants (filtres, analyseurs lexicaux et gestionnaires de protocoles) utilisés pour tous les catalogues de texte intégral dans la base de données active.

Retourne des lignes vides.

DATABASEPROPERTYEX

Utilisation de la propriété IsFullTextEnabled.

Le paramètre IsFullTextEnabled indique si la recherche en texte intégral est activée dans une base de données spécifique.

La valeur de cette colonne est sans effet. Les bases de données utilisateur sont toujours activées pour la recherche en texte intégral.

Voir aussi

Concepts

Changements de comportement de la recherche en texte intégral

Recherche en texte intégral (SQL Server)