FREETEXTTABLE (Transact-SQL)

Mis à jour : 17 juillet 2006

Renvoie une table de zéro, une ou plusieurs lignes dans les colonnes qui contiennent des types de données basés sur des caractères dont les valeurs correspondent à la signification, mais pas aux mots exacts, du texte spécifié dans freetext_string. La fonction FREETEXTTABLE peut être référencée dans la clause FROM d'une instruction SELECT comme un nom de table classique.

Les recherches qui utilisent FREETEXTTABLE spécifient des recherches de texte intégral libre qui renvoient un niveau de correspondance (RANK) et une clé de texte intégral (KEY) pour chaque ligne.

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

Syntaxe

FREETEXTTABLE (table , { column_name | (column_list) | * } 
          , 'freetext_string' 
     [ ,LANGUAGE language_term ] 
     [ ,top_n_by_rank ] )

Arguments

  • table
    Nom de la table marquée pour la recherche de texte intégral. L'argument table ou viewpeut être un nom d'objet de base de données composé d'une, deux, trois ou quatre parties. Lors de l'interrogation d'une vue, une seule table de base de texte intégral indexée peut être impliquée.

    Pour plus d'informations, consultez Conventions de syntaxe de Transact-SQL (Transact-SQL).

    table ne peut spécifier un nom de serveur ni être utilisé dans des requêtes exécutées sur des serveurs liés.

  • column_name
    Nom de la colonne dans laquelle la recherche est effectuée et qui se trouve dans table. Les colonnes de type char, varchar, nchar, nvarchar, text, ntext, image, xml et varbinary(max) sont valides pour la recherche de texte intégral.
  • column_list
    Indique que plusieurs colonnes, délimitées par des virgules, peuvent être spécifiées. L'argument column_list doit être mis entre parenthèses. À moins que la valeur de language_term soit définie, une seule et même langue doit être utilisée dans toutes les colonnes de column_list.
  • *
    Précise que toutes les colonnes enregistrées pour la recherche de texte intégral doivent être utilisées pour rechercher la chaîne freetext_string spécifique. À moins que la valeur de language_term soit spécifié, la langue de l'ensemble des colonnes de texte intégral indexées dans la table doit être la même.
  • freetext_string
    Texte à rechercher dans column_name. Tout texte, y compris des mots, expressions et phrases peuvent être entrés. Des correspondances sont générées si l'un des termes ou les formes de quelque terme que ce soit sont trouvés dans l'index de texte intégral.

    Contrairement à la condition de recherche CONTAINS où AND est un mot clé, lorsqu'il est utilisé avec freetext_string le mot « and » est considéré en tant que mot non significatif et il est ignoré.

    L'utilisation de WEIGHT, de FORMSOF, de caractères génériques, de NEAR et d'autres syntaxes n'est pas autorisée. freetext_string supporte la césure de mots, la lemmatisation et la recherche des synonymes. Si des guillemets doubles renferment freetext_string, une correspondance au niveau syntagmatique est réalisée à la place ; la lemmatisation et la recherche de synonymes ne sont pas effectuées.

  • LANGUAGE language_term
    Langue dont les ressources seront utilisées pour la séparation des mots, la racine des mots et le thésaurus, tandis que la suppression des mots non significatifs fait partie de la requête FREETEXTTABLE. Ce paramètre est facultatif et peut être spécifié sous forme de chaîne, d'entier ou de valeur hexadécimale correspondant à l'identificateur local (LCID) d'une langue. Si l'argument language_term est spécifié, la langue qu'il représente est appliquée à tous les éléments de la condition de recherche. Si aucune valeur n'est spécifiée, la langue de la colonne de texte intégral est utilisée.

    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 ne doit pas excéder huit chiffres, zéros non significatifs inclus.

    Si la valeur est au format DBCS (double-byte character set), Microsoft SQL Server la convertit au format Unicode.

    Si la langue spécifiée n'est pas valide ou qu'il n'existe pas de ressource installée correspondant à cette langue, SQL Server renvoie une erreur. Pour utiliser des ressources de langage neutre, indiquez 0x0 pour language_term.

  • top_n_by_rank
    Lorsqu'un entier n est spécifié, FREETEXTTABLE renvoie uniquement les n premières correspondances, classées par rang.

    Si un filtrage est effectué en plus du prédicat FREETEXTTABLE, le filtre est appliqué aux n premières lignes et moins de top_n_by_rank lignes sont renvoyées. L'activation de l'option precompute rank dans la procédure stockée sp_configure peut améliorer les performances des requêtes FREETEXTTABLE utilisant le paramètre top_n_by_rank. Pour plus d'informations, consultez sp_configure (Transact-SQL) et sp_fulltext_service (Transact-SQL).

Notes

La fonction FREETEXTTABLE utilise les mêmes conditions de recherche que le prédicat FREETEXT.

Comme CONTAINSTABLE, la table renvoyée possède des colonnes nommées KEY et RANK, qui sont référencées à l'intérieur de la requête pour obtenir les lignes appropriées et utiliser les valeurs de rang des lignes.

FREETEXTTABLE n'est pas reconnu en tant que mot clé si le niveau de compatibilité est inférieur à 70. Pour plus d'informations, consultez sp_dbcmptlevel (Transact-SQL).

Autorisations

FREETEXTTABLE ne peut être appelée que par les utilisateurs disposant des privilèges SELECT appropriés sur la table spécifiée ou les colonnes référencées de la table.

Exemples

L'exemple suivant renvoie le nom et la description de toutes les catégories qui ont un rapport avec les mots sweet, candy, bread, dry ou meat.

ms177652.note(fr-fr,SQL.90).gifRemarque :
Pour exécuter cet exemple, vous allez devoir installer la base de données Northwind. Pour plus d'informations sur l'installation de la base de données Northwind, consultez Téléchargement des exemples de bases de données Northwind et pubs.
USE Northwind;
SELECT FT_TBL.CategoryName 
    ,FT_TBL.Description
    ,KEY_TBL.RANK
FROM dbo.Categories AS FT_TBL 
    INNER JOIN FREETEXTTABLE(dbo.Categories, Description, 
        'sweetest candy bread and dry meat') AS KEY_TBL
        ON FT_TBL.CategoryID = KEY_TBL.[KEY];
GO

L'exemple suivant est identique et illustre l'utilisation des paramètres LANGUAGElanguage_term et top_n_by_rank .

USE Northwind;
SELECT FT_TBL.CategoryName 
    ,FT_TBL.Description
    ,KEY_TBL.RANK
FROM dbo.Categories AS FT_TBL 
    INNER JOIN FREETEXTTABLE(dbo.Categories, Description, 
        'sweetest candy bread and dry meat',LANGUAGE 'English',2) 
        AS KEY_TBL
        ON FT_TBL.CategoryID = KEY_TBL.[KEY];
GO
ms177652.note(fr-fr,SQL.90).gifRemarque :
Le paramètre LANGUAGE language_term n'est pas requis pour utiliser le paramètre top_n_by_rank .

Historique des modifications

Version Historique

17 juillet 2006

Nouveau contenu :
  • Ajout de l'exemple pour l'argument LANGUAGE.

Voir aussi

Référence

CONTAINS (Transact-SQL)
CONTAINSTABLE (Transact-SQL)
FREETEXT (Transact-SQL)
Fonctions Rowset (Transact-SQL)
SELECT (Transact-SQL)
WHERE (Transact-SQL)

Autres ressources

Exécution de requêtes SQL Server à l'aide de la recherche de texte intégral
Option precompute rank

Aide et Informations

Assistance sur SQL Server 2005