J'obtiens l'erreur suivante dans ma base de données SQL Server 2008 R2:
Impossible d'utiliser un prédicat
CONTAINS
ouFREETEXT
sur la table ou la vue indexée 'tblArmy' car elle n'est pas indexée en texte intégral.
sql
sql-server
tsql
sql-server-2008
full-text-search
DotnetSparrow
la source
la source
Réponses:
Assurez-vous que la fonction de recherche en texte intégral est installée.
Créez un catalogue de recherche en texte intégral.
Créez un index de recherche en texte intégral.
Avant de créer l'index, assurez-vous que:
- vous n'avez pas déjà d'index de recherche en texte intégral sur la table car un seul index de recherche en texte intégral est autorisé sur une table
- 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, cliquez avec le bouton droit sur une table, sélectionnez l'
Full-Text index
élément de menu, puis l'élément deDefine Full-Text Index...
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
la source
Une solution de contournement pour
CONTAINS
: Si vous ne souhaitez pas créer un index de texte intégral sur la colonne et que les performances ne font pas partie de vos priorités, vous pouvez utiliser l'LIKE
instruction qui ne nécessite aucune configuration préalable:Exemple: recherchez tous les produits contenant la lettre Q:
la source
Vous devez définir
Full-Text-Index
sur toutes les tables de la base de données où vous devez utiliser une requêteCONTAINS
qui prendra un certain temps.Au lieu de cela, vous pouvez utiliser le
LIKE
qui vous donnera des résultats instantanés sans avoir besoin d'ajuster les paramètres des tableaux.Exemple:
Le même résultat obtenu avec
CONTAINS
peut être obtenu avecLIKE
.voir le résultat:
la source
Vous devrez peut-être activer la table pour l'indexation de texte intégral .
la source
vous devez ajouter un index de texte intégral sur les champs spécifiques que vous souhaitez rechercher.
où "actualités" est votre tableau et les champs "titre, histoire" que vous n'activerez pas pour la recherche plein texte
la source
Il existe une autre solution pour définir la colonne Texte intégral sur true.
Cette solution par exemple n'a pas fonctionné pour moi
Ma solution.
PROCHAINES ÉTAPES
Rafraîchir
Version de mssql 2014
la source
agira comme% identique à
la source