Requêtes de recherche de texte intégral
Pour écrire des requêtes de texte intégral dans Microsoft SQL Server 2005, vous devez apprendre à utiliser les prédicats Transact-SQL CONTAINS et FREETEXT, ainsi que les fonctions d'ensemble de lignes CONTAINSTABLE et FREETEXTTABLE.
Les prédicats CONTAINS et FREETEXT ne peuvent être utilisés que dans la clause WHERE d'une instruction SELECT. Les fonctions d'ensemble de lignes CONTAINSTABLE et FREETEXTTABLE peuvent être utilisées dans la clause FROM d'une instruction SELECT.
Le prédicat CONTAINS gère une syntaxe puissante pour effectuer dans des colonnes de données textuelles des recherches sur :
- Un ou plusieurs mots ou expressions spécifiques (terme simple).
Dans la recherche de texte intégral, un mot est considéré comme un jeton. Un jeton est identifié par des séparateurs de mots appropriés, qui suivent les règles linguistiques de la langue spécifiée. Une expression valide est constituée de plusieurs mots, avec ou sans ponctuation entre eux. Par exemple, « croissant » constitue un mot et « café au lait » une expression. De tels mots et expressions sont considérés comme des termes simples. - Les formes fléchies d'un mot spécifique (forme canonique).
Par exemple, rechercher les formes fléchies du verbe « drive ». Si plusieurs lignes de la table comportent les mots « drive », « drives », « drove », « driving » et « driven », tous ces termes apparaîtront dans le jeu de résultats, dans la mesure où chacun d'entre eux peut être généré à partir du mot « drive ». - Les formes synonymes d'un mot spécifique (dictionnaire des synonymes).
Par exemple, si une entrée « {car, automobile, truck, van} » est ajoutée à un dictionnaire des synonymes, vous pouvez rechercher la forme du dictionnaire des synonymes pour le mot « car ». Toutes les lignes de la table interrogée qui contiennent les mots « automobile », « truck », « van » ou « car » s'affichent dans le jeu de résultats, car chacun de ces mots appartient au jeu d'expansion des synonymes contenant le mot « car ». Pour plus d'informations sur la structure des fichiers du dictionnaire des synonymes, consultez Configuration des fichiers du dictionnaire des synonymes. - Un mot ou une expression débutant avec du texte spécifique (préfixe).
Dans le cas d'une expression, chacun des mots qui constituent cette expression est considéré comme un préfixe. Par exemple, le terme « auto tran* » correspond à « automatic transmission » et « automobile transducer » mais pas à « automatic motor transmission ». - Mots ou expressions utilisant des valeurs pondérées (termes pondérés).
Par exemple, dans une requête de recherche de plusieurs termes, vous pouvez affecter à chaque mot de recherche une valeur de pondération indiquant son importance par rapport aux autres mots figurant dans la condition de recherche. Les résultats de ce type de requête renvoient les lignes les plus pertinentes en premier, en fonction du poids relatif affecté aux mots de recherche. - Mot ou expression voisine d'un autre mot ou d'une autre expression (cooccurrent).
Par exemple, vous pouvez rechercher les lignes dans lesquelles le mot « ice » est voisin du mot « hockey » et celles dans lesquelles l'expression « ice skating » est voisine de « ice hockey ».
Un prédicat CONTAINS peut combiner plusieurs de ces termes à l'aide des opérateurs booléens AND, OR et NOT, par exemple pour trouver toutes les lignes comportant « latte » et « New York-style bagel » dans une même colonne indexée en texte intégral. En outre, ces termes peuvent être mis à la forme négative à l'aide de AND NOT, comme par exemple, « bagel » et pas « cream cheese ».
Lorsque vous utilisez CONTAINS, il faut toujours garder à l'esprit que SQL Server élimine les mots non significatifs des critères de recherche. Les mots non significatifs sont des mots tels que « un », « et », « est », « le » dont l'occurrence est fréquente mais qui ne sont pas utiles pour une recherche de texte spécifique. Pour plus d'informations sur les mots non significatifs, consultez Mots non significatifs.
Voir aussi
Concepts
Exécution de requêtes SQL Server à l'aide de la recherche de texte intégral