Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Impossible d'utiliser un prédicat CONTAINS ou FREETEXT sur une table ou une vue indexée car il n'est pas indexé en texte intégral

  1. Assurez-vous que la fonction de recherche en texte intégral est installée.

  1. Créer un catalogue de recherche en texte intégral (si nécessaire)

    Vérifiez d'abord si un catalogue existe déjà

      select *
      from sys.fulltext_catalogs
    

    Si aucun catalogue n'est trouvé, créez-en un

      use [DatabaseName]
      create fulltext catalog FullTextCatalog as default
    

    vous pouvez vérifier que le catalogue a été créé de la même manière que ci-dessus

  2. Créer un index de recherche de texte intégral.

      create fulltext index on Production.ProductDescription(Description)
      key index PK_ProductDescription_ProductDescriptionID
    

    Avant de créer l'index, assurez-vous :
    - que vous n'avez pas déjà un index de recherche de texte intégral sur la table car un seul index de recherche de texte intégral est autorisé sur une table
    - qu'un index unique existe sur la table. L'index doit être basé sur une colonne à clé unique, qui n'autorise pas NULL.
    - Un catalogue de texte intégral existe. Vous devez spécifier explicitement le nom du catalogue de texte intégral s'il n'y a pas de catalogue de texte intégral par défaut.

Vous pouvez effectuer les étapes 2 et 3 dans SQL Server Management Studio. Dans l'explorateur d'objets, faites un clic droit sur une table, sélectionnez Full-Text index élément de menu puis Define Full-Text Index... élément de sous-menu. L'assistant d'indexation de texte intégral vous guidera tout au long du processus. Il créera également un catalogue de recherche en texte intégral pour vous si vous n'en avez pas encore.

Vous pouvez trouver plus d'informations sur MSDN

Après avoir suivi les étapes, vous avez besoin de quelques minutes pour que l'index de recherche de texte intégral soit créé (cela dépend de la taille des données de la table et de la colonne)