Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le prédicat CONTAINSSEMANTIC fait partie de la clause WHERE et prend en charge la recherche sémantique dans le contenu indexé. La clause peut être utilisée pour rechercher du texte ou des images en fonction de leur similarité sémantique, plutôt que des correspondances exactes de mots clés.
Voici la syntaxe de base du prédicat CONTAINSSEMANTIC :
...CONTAINSSEMANTIC (ContentType, [<fulltext_column or #list>,] search_text_phrase, LCID) ...
Le paramètre ContentType spécifie si la recherche concerne du texte ou des images. Les valeurs autorisées sont « text » ou « image ».
La référence fulltext_column est facultative. Avec elle, vous pouvez limiter la recherche à une seule colonne ou à un groupe de colonnes sur lequel le prédicat CONTAINSSEMANTIC est testé. Lorsque fulltext_column est spécifié en tant que « * », toutes les propriétés de texte indexées sont recherchées. Bien que la colonne ne soit pas obligatoire pour être une propriété de texte, les résultats peuvent être sans signification si la colonne est d’un autre type de données. Le nom de colonne peut être un identificateur normal ou délimité, et vous devez le séparer de la condition par une virgule. Si aucune fulltext_column n’est spécifiée, la colonne System.Search.Contents, qui est le corps du document, est utilisée.
La partie LCID du prédicat spécifie les paramètres régionaux de recherche. Cela indique au moteur de recherche d’utiliser le analyseur de mots approprié et les formulaires d’inflection pour la requête de recherche. Pour spécifier les paramètres régionaux, fournissez l’identificateur de code de langage standard (LCID) Windows. Par exemple, 1033 est le LCID pour l'anglais (États-Unis). Placez le LCID comme dernier élément entre parenthèses de la clause CONTAINSSEMANTIC. Pour plus d’informations sur la recherche et les langues, consultez Utilisation de recherches localisées.
L’indexation et la recherche traditionnelles continuent de fonctionner en toute transparence pour tous les modules linguistiques pris en charge sur Windows. Toutefois, la recherche améliorée est optimisée uniquement pour ces langues :
| Language | Valeur LCID |
|---|---|
| Anglais (US) | 1036 |
| Anglais (CA) | 4105 |
| Anglais (AU) | 3081 |
| Anglais (GB) | 2057 |
| Français (FR) | 1036 |
| Français (CA) | 3084 |
| Allemand (DE) | 1031 |
| Espagnol (ES) | 3082 |
| Espagnol (MX) | 2058 |
| Japonais (JP) | 1041 |
| Chinois (simplifié) | 2052 |
Note
Les paramètres régionaux de recherche par défaut sont les paramètres régionaux par défaut du système.
Pour plus d’informations sur les valeurs LCID, consultez Référence de l’identificateur de code de langue Windows (LCID).
La partie search_text_phrase doit être placée entre guillemets simples pour des mots simples ou des guillemets doubles pour les expressions, et se compose d’un ou plusieurs termes de recherche de contenu combinés à l’aide des opérateurs logiques AND ou OR. Vous pouvez utiliser l’opérateur unaire facultatif NOT après un opérateur AND pour annuler la valeur logique d’un terme de recherche de contenu.
Note
L’opérateur NOT ne peut se produire qu’après AND. Vous ne pouvez pas utiliser l’opérateur NOT s’il n’existe qu’une seule condition de correspondance ou après l’opérateur OR .
Vous pouvez utiliser des parenthèses pour regrouper et imbriquer les termes de recherche de contenu. Le tableau suivant décrit l’ordre de priorité pour les opérateurs logiques.
| Ordre (précédence) | Opérateur logique |
|---|---|
| Premier (le plus élevé) | NOT |
| Second | AND |
| Troisième (le plus bas) | OR |
Les opérateurs logiques du même type sont associatifs et il n’existe aucun ordre de calcul spécifié. Par exemple, (A AND B) AND (C AND D) peut être calculé (B AND C) AND (A AND D) sans altération du résultat logique.
Example
L’exemple suivant montre une requête pour les documents et les images liés à l’expression « famille sur une plage » à l’aide de la clause CONTAINSSEMANTIC .
SELECT * FROM SystemIndex
WHERE CONTAINSSEMANTIC('text', *, 'family on a beach', 1033)
OR CONTAINSSEMANTIC('image', *, 'family on a beach', 1033)
RANK BY MERGE(merge_operation)