CREATE FULLTEXT INDEX (Transact-SQL)

Mis à jour : 12 décembre 2006

Crée un index de texte intégral sur une ou plusieurs colonnes d'une table ou d'une vue indexée dans une base de données. Un seul index de texte intégral par table ou vue indexée est autorisé. Par défaut, une base de données permet la recherche de texte intégral lorsque vous la créez.

Icône Lien de rubriqueConventions de la syntaxe de Transact-SQL

Syntaxe

CREATE FULLTEXT INDEX ON table_name
     [(column_name [TYPE COLUMN type_column_name] 
          [LANGUAGE language_term] [,...n])]
     KEY INDEX index_name
          [ON fulltext_catalog_name]
     [WITH 
          {CHANGE_TRACKING {MANUAL | AUTO | OFF [, NO POPULATION]}}
     ]

Arguments

  • table_name
    Nom de la table ou de la vue indexée qui contient la ou les colonnes incluses dans l'index de texte intégral.
  • column_name
    Nom des colonnes incluses dans l'index de texte intégral. Seules les colonnes de type char, varchar, nchar, nvarchar, text, ntext, image, xml et varbinary peuvent être indexées pour une recherche de texte intégral.
  • TYPE COLUMN type_column_name
    Nom de la colonne de table_name contenant le type de document de column_name.

    type_column_name doit être du type char, nchar, varchar, ou nvarchar. Spécifiez type_column_name uniquement si la ou les colonnes de column_name sont de type varbinary(max) ou image ; dans le cas contraire, SQL Server retourne une erreur.

    Pour plus d'informations, consultez Filtres de recherche en texte intégral.

  • LANGUAGE language_term
    Langue des données stockées dans column_name.

    language_term est facultatif et peut être défini comme une chaîne, un entier ou une valeur hexadécimale correspondant à l'identificateur de paramètres régionaux (LCID) d'une langue. Si language_term est spécifié, la langue représentée sera utilisée pour indexer les données stockées dans les colonnes de type char, nchar, varchar, nvarchar, text et ntext. Cette langue est la langue utilisée par défaut lors d'une requête si language_term n'est pas spécifié en tant qu'élément d'un prédicat de texte intégral avec la colonne. Si aucune valeur n'est spécifiée, la langue par défaut de l'instance SQL Server est utilisée.

    Si la langue est inconnue ou si plusieurs langues doivent être stockées dans column_name (et que la colonne n'est pas de type BLOB ou XML), utilisez la langue neutre (0x0). Pour plus d'informations, consultez Considérations internationales relatives à la recherche de texte intégral.

    Utilisez la procédure stockée sp_configure pour accéder aux informations concernant la langue de texte intégral par défaut de l'instance Microsoft SQL Server. Pour plus d'informations, consultez sp_configure (Transact-SQL) et Option default full-text language.

    Lorsqu'il est spécifié comme chaîne, l'argument language_term correspond à la valeur de la colonne alias dans la table système syslanguages. La chaîne doit être placée entre guillemets simples, comme dans la chaîne 'language_term'. Lorsqu'il est spécifié comme entier, l'argument language_term est alors le LCID actif identifiant la langue. Quand il est spécifié comme valeur hexadécimale, l'argument language_term est 0x suivi de la valeur hexadécimale du LCID. La valeur hexadécimale doit comporter huit chiffres au maximum, y compris les zéros non significatifs.

    Si la valeur est au format de jeu de caractères codés sur deux octets (DBCS), SQL Server le convertit au format Unicode.

    Les ressources telles que les séparateurs de mots et les segmenteurs de mots doivent être activées pour la langue spécifiée en tant que language_term. Si ces ressources ne prennent pas en charge la langue spécifiée, SQL Server retourne une erreur.

    Pour les colonnes de type non BLOB et non XML contenant du texte multilingue ou si la langue du texte stocké dans la colonne est inconnue, utilisez la ressource de langue neutre (0x0). Pour les documents stockés dans des colonnes de type XML ou BLOB, le codage de la langue du document sera utilisé lors de l'indexation. Par exemple, dans les colonnes de type XML, l'attribut xml:lang des documents XML identifie la langue. Lors d'une requête, la valeur précédemment spécifiée dans language_term devient la langue par défaut utilisée pour les requêtes de texte intégral, sauf si language_term est spécifié dans le cadre d'une requête de texte intégral.

  • ,... n
    Indique que plusieurs colonnes peuvent être spécifiées à des fins d'indexation de texte intégral. Si plusieurs colonnes sont spécifiées, séparez-les par une virgule.
  • KEY INDEX index_name
    Nom de l'index de clé unique dans table_name. KEY INDEX doit être une colonne unique, de clé unique et non NULL. Sélectionnez le plus petit index de clé unique comme clé unique de texte intégral. Pour des performances optimales, un index CLUSTER est recommandé.
  • ON fulltext_catalog_name
    Catalogue de texte intégral utilisé pour l'index de texte intégral. Le catalogue doit déjà exister dans la base de données. Cette clause est facultative. En l'absence de toute spécification, le catalogue par défaut est utilisé. S'il n'existe aucun catalogue par défaut, SQL Server retourne une erreur.

    Le groupe de fichiers de fulltext_catalog_name ou si aucun catalogue n'est spécifié, le catalogue de texte intégral par défaut ne doit pas être de type READONLY ou OFFLINE. Sinon, SQL Server retourne une erreur.

  • WITH CHANGE_TRACKING {MANUAL | AUTO | OFF [ **,**NO POPULATION]}
    Indique si toutes les modifications apportées aux données indexées sont répertoriées sous la forme d'une liste par SQL Server. Les données modifiées à l'aide de la commande WRITETEXT et UPDATETEXT ne sont pas récupérées avec le suivi des modifications.

    • MANUAL
      Spécifie que le journal de suivi des modifications sera diffusé soit suivant une planification à l'aide de l'Agent SQL Server, soit manuellement par l'utilisateur.
    • AUTO
      Spécifie que SQL Server met à jour automatiquement l'index de texte intégral au fur et à mesure que les données sont modifiées dans les tables associées. Il s'agit de la valeur par défaut.

      Remarque   Même si les modifications peuvent être diffusées automatiquement, elles ne seront pas appliquées immédiatement à l'index de texte intégral. Pour plus d'informations sur les propriétés utilisées pour contrôler le processus d'indexation de texte intégral et pour diagnostiquer les problèmes liés à cette opération, consultez Obtention de valeurs de propriétés de texte intégral à l'aide de fonctions Transact-SQL.

    • OFF [ **,**NO POPULATION]
      Spécifie que SQL Server ne conserve aucune liste des modifications apportées aux données indexées.

      L'option NO POPULATION peut être utilisée uniquement lorsque la valeur de CHANGE_TRACKING est OFF. Si l'option NO POPULATION est spécifiée, SQL Server ne remplit pas l'index une fois qu'il est créé. L'index est rempli uniquement après l'exécution de la commande ALTER FULLTEXT INDEX avec la clause START FULL ou INCREMENTAL POPULATION. Si l'option NO POPULATION est spécifiée, SQL Server remplit l'index une fois qu'il est créé.

Autorisations

L'utilisateur doit disposer soit de l'autorisation REFERENCES sur le catalogue de texte intégral soit de l'autorisation ALTER sur la table ou la vue ; il peut également être membre du rôle de serveur fixe sysadmin ou membre du rôle de base de données fixe db_owner ou db_ddladmin.

Exemple

L'exemple suivant illustre la création de l'index de texte intégral sur la table HumanResources.JobCandidate.

USE AdventureWorks;
GO
CREATE UNIQUE INDEX ui_ukJobCand ON HumanResources.JobCandidate(JobCandidateID);
CREATE FULLTEXT CATALOG ft AS DEFAULT;
CREATE FULLTEXT INDEX ON HumanResources.JobCandidate(Resume) KEY INDEX ui_ukJobCand;
GO

Voir aussi

Référence

ALTER FULLTEXT INDEX (Transact-SQL)
DROP FULLTEXT INDEX (Transact-SQL)
GRANT (Transact-SQL)

Autres ressources

Recherche de texte intégral

Aide et Informations

Assistance sur SQL Server 2005

Historique des modifications

Version Historique

12 décembre 2006

Nouveau contenu :
  • Précision que les index de texte intégral peuvent également s'appliquer à des vues indexées.
  • Ajout d'un lien vers la rubrique Filtres afin de clarifier la clause TYPE COLUMN.