Partager via


Vue d'ensemble de la recherche en texte intégral

Les requêtes de texte intégral effectuent des recherches linguistiques sur des données texte dans des index de recherche en texte intégral, en traitant les mots et les expressions à partir des règles spécifiques d'une langue telle que l'anglais ou le japonais. Les requêtes de texte intégral peuvent inclure des mots et des expressions simples ou plusieurs formes d'un mot ou d'une expression.

La recherche en texte intégral s'applique à une large gamme de scénarios d'entreprise. Par exemple, les entreprises e-business peuvent l'utiliser pour rechercher des éléments sur un site Web, les cabinets d'avocats pour rechercher des antécédents dans des archives juridiques, et les départements des ressources humaines pour établir des correspondances entre des descriptions de poste et des curriculum vitæ stockés. Les principales tâches d'administration et de développement de la recherche en texte intégral sont identiques pour tous les scénarios d'entreprise. Toutefois, il est possible d'affiner l'index de recherche en texte intégral et les requêtes de texte intégral dans un scénario d'entreprise donné afin de répondre à des objectifs d'entreprise précis. Par exemple, pour une entreprise e-business, l'optimisation des performances sera peut-être plus importante que le classement des résultats, l'exactitude de rappel (nombre de correspondances existantes à être réellement retournées par une requête de texte intégral), ou la prise en charge de plusieurs langues. Pour un cabinet d'avocats, garantir le retour de chaque correspondance possible (rappel total) sera peut-être plus le plus important.

Vue d'ensemble de la configuration d'une base de données pour la recherche en texte intégral

Dans n'importe quel scénario, un administrateur de base de données effectue les étapes de base suivantes afin de configurer les colonnes de table d'une base de données pour la recherche en texte intégral :

  1. Création d'un catalogue de texte intégral.

  2. Sur chaque table devant faire l'objet d'une recherche, créez un index de recherche en texte intégral en procédant comme suit :

    1. Identifiez chaque colonne de texte que vous souhaitez inclure dans l'index de recherche en texte intégral.

    2. Si une colonne donnée contient des documents stockés en tant que données binaires (données varbinary, varbinary(max) ou image), vous devez spécifier une colonne de table (colonne de type) qui identifie le type de chaque document dans la colonne qui est indexée.

    3. Spécifiez la langue à utiliser par la recherche en texte intégral sur les documents contenus dans la colonne.

    4. Choisissez le mécanisme de suivi des modifications que vous souhaitez utiliser sur l'index de recherche en texte intégral afin de suivre les modifications effectuées dans la table de base et dans ses colonnes.

La recherche en texte intégral prend en charge plusieurs langues via l'utilisation des composants linguistiques suivants : analyseurs lexicaux et générateurs de formes dérivées, listes de mots vides qui contiennent des mots vides (également appelés mots parasites) et fichiers de dictionnaire des synonymes. Les fichiers de dictionnaire des synonymes et, dans certains cas, les listes de mots vides, doivent être configurés par un administrateur de base de données. Un fichier de dictionnaire des synonymes donné prend en charge tous les index de recherche en texte intégral qui utilisent la langue correspondante, et une liste de mots vides donnée peut être associée à autant d'index de recherche en texte intégral que nécessaire.

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

Vue d'ensemble des requêtes de texte intégral

Une fois que les colonnes ont été ajoutées à un index de recherche en texte intégral, les applications et les utilisateurs peuvent exécuter des requêtes de texte intégral sur le texte contenu dans ces colonnes. Ces requêtes peuvent être utilisées pour rechercher les éléments suivants :

  • Un ou plusieurs mots ou expressions spécifiques (terme simple)

  • Un mot ou une expression débutant par un texte spécifié (préfixe)

  • Les formes flexionnelles d'un mot spécifique (forme canonique)

  • Un mot ou une expression proches d'un autre mot ou d'une autre expression (terme de proximité)

  • Les formes synonymes d'un mot spécifique (dictionnaire des synonymes)

  • Les mots ou expressions utilisant des valeurs pondérées (terme pondéré)

Les requêtes de texte intégral utilisent toutes un jeu réduit de prédicats (CONTAINS et FREETEXT) et de fonctions (CONTAINSTABLE et FREETEXTTABLE) Transact-SQL. Toutefois, les objectifs de la recherche pour un scénario d'entreprise donné influencent la structure exacte des requêtes de texte intégral ; par exemple :

  • Entreprise e-business : rechercher un produit sur un site Web :

    SELECT product_id FROM products WHERE CONTAINS(product_description, ”Snap Happy 100EZ” OR FORMSOF(THESAURUS,’Snap Happy’) OR ‘100EZ’) AND product_cost<200 …
    
  • Scénario de recrutement : rechercher des postulants à un emploi qui connaissent bien SQL Server :

    SELECT candidate_name,SSN FROM candidates WHERE CONTAINS(candidate_resume,”SQL Server”) AND candidate_division =DBA
    

Pour plus d'informations, consultez Exécution de requêtes SQL Server à l'aide de la recherche en texte intégral.

Comparaison entre LIKE et la recherche en texte intégral

Contrairement à la recherche en texte intégral, le prédicat Transact-SQLLIKE fonctionne uniquement sur les modèles de caractères. En outre, vous ne pouvez pas utiliser le prédicat LIKE pour interroger des données binaires mises en forme. De plus, une requête LIKE portant sur un important volume de données de texte non structurées est beaucoup plus lente qu'une requête de texte intégral équivalente exécutée sur les mêmes données. Une requête LIKE portant sur des millions de lignes de données de texte peut prendre plusieurs minutes pour retourner un résultat alors qu'une requête de texte intégral retourne en quelques secondes à peine le même résultat, en fonction du nombre de lignes retournées.