Partager via


Where, clause (Windows Search)

Les conditions qui déterminent si un document est inclus dans les résultats retournés par la requête sont spécifiées par la clause WHERE. Au niveau le plus élevé, la syntaxe de la clause WHERE comporte deux parties :

...WHERE [<group_aliases>] <search_condition>
...WHERE ReuseWhere(<WHEREID>)

La partie facultative <group_alias> de la clause simplifie les requêtes complexes en affectant un alias à un groupe d’une ou plusieurs colonnes. Cela peut améliorer la lisibilité des requêtes complexes qui recherchent les mêmes informations sur plusieurs colonnes spécifiées par les URL. Pour plus d’informations sur les alias de groupe, consultez WITH -- AS Group Alias Predicate.

La <partie condition> de recherche de la clause WHERE est un ou plusieurs prédicats de recherche qui spécifient des critères de correspondance pour la recherche. Les prédicats de recherche sont des expressions qui affirment des faits sur une valeur.

Le résultat d’une condition de recherche est une valeur booléenne, true si le document répond aux conditions de recherche spécifiées, ou FALSE si ce n’est pas le cas. Si le résultat est TRUE, le document est retourné. Si le résultat est FALSE, le document n’est pas retourné. Les documents retournés dans une requête Recherche Microsoft Windows se voient attribuer des valeurs de classement en fonction de la façon dont ils correspondent aux conditions de recherche. Chacune des conditions de recherche de requête peut inclure une clause RANKBY qui prend en charge la modification des valeurs de classement retournées.

La fonction ReuseWhere rend plusieurs requêtes qui utilisent certaines des mêmes conditions de recherche plus efficace. La clause WHERE dans une requête spécifie l’ensemble des éléments qui correspondent à une requête. Les requêtes suivantes peuvent partager le travail effectué pour l’évaluation précédente à l’aide de la fonction ReuseWhere dans la nouvelle clause WHERE de requête.

Prédicats de recherche

Une condition de recherche se compose d’un ou plusieurs prédicats ou conditions de recherche qui décrivent ce que l’utilisateur recherche (par exemple, WHERE System.DateCreated >« 2006-04-19 »). Les prédicats de recherche peuvent être combinés à l’aide des opérateurs logiques AND, OR ou NOT. L’opérateur unaire facultatif NOT ne peut être utilisé qu’avec AND et uniquement pour nier la valeur logique d’un prédicat ou d’une condition de recherche. Vous pouvez utiliser des parenthèses pour regrouper et imbriquer des termes logiques.

Le tableau suivant indique l’ordre de priorité des opérateurs logiques.

Ordre (précédence) Opérateur logique
Premier (le plus élevé) NOT
Second AND
Troisième (plus faible) 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é (A AND D) AND (B AND C) sans modification du résultat logique.

Important

Incorrect : WHERE NOT CONTAINS (« computer »)

Correct : WHERE CONTAINS (« software ») AND NOT CONTAINS (« computer »)

 

Dans les requêtes complexes, vous souhaiterez peut-être mettre davantage l’accent sur les correspondances dans certaines colonnes que dans d’autres. Par exemple, lors de la recherche de documents qui traitent de la « conception de logiciels », trouver le terme de recherche dans le titre du document est plus susceptible d’être une bonne correspondance que de trouver les mots individuels dans le texte du document. Pour influencer le classement des documents de cette manière, le langage de requête Recherche Microsoft Windows prend en charge la pondération des conditions de recherche. Pour plus d’informations sur la pondération des colonnes, consultez Contains Predicate et FREETEXT Predicate.

Il existe trois groupes de prédicats de recherche dans Recherche Windows : recherche en texte intégral, recherche en texte non intégral et recherche de profondeur de dossier. Les prédicats de recherche en texte intégral correspondent généralement à la signification du contenu, du titre et d’autres colonnes, et prennent en charge la correspondance linguistique (par exemple, les formes de mots alternatives, les expressions et la recherche de proximité). En revanche, les prédicats de recherche en texte non intégral correspondent à la valeur des colonnes spécifiées et n’incluent pas de traitement linguistique spécial, mais offrent dans plusieurs cas une correspondance de modèle basée sur des caractères. Les prédicats de profondeur de dossier limitent l’étendue de la recherche à un chemin spécifié.

Notes

Si la requête retourne un document parce qu’un prédicat de texte non intégral prend la valeur TRUE pour ce document, la valeur de classement est calculée comme 1000. L’utilisation de la fonction de forçage de classement peut modifier la valeur de classement.

 

Les tableaux suivants décrivent les prédicats de recherche en texte intégral, en texte non intégral et en profondeur de dossier.

Prédicat de texte intégral Description
CONTAINS Prend en charge les recherches complexes de termes dans les colonnes de texte du document (par exemple, titre, contenu). Peut rechercher des formes inflectées des termes de recherche, tester la proximité des termes et effectuer des comparaisons logiques. Les termes de recherche peuvent inclure des caractères génériques.
FREETEXT Recherche des documents qui correspondent à la signification de l’expression de recherche. Les mots associés et les expressions similaires correspondent, la colonne de classement est calculée en fonction de la correspondance entre le document et l’expression de recherche. Les termes de recherche ne peuvent pas inclure de caractères génériques.

 

Prédicat de texte non intégral Description
LIKE Les valeurs de colonne sont comparées à l’aide d’une simple correspondance de modèle avec des caractères génériques.
Comparaison des valeurs littérales Les valeurs de colonne sont comparées aux valeurs de chaîne, de date, d’horodatage, de numérique et d’autres valeurs littérales. Ce prédicat soutient l’égalité et les inégalités telles que supérieur à et inférieur à.
Comparaisons à valeurs multiples (ARRAY) Les colonnes à valeurs multiples sont comparées à un tableau de littéraux à valeurs multiples.
NULL Les valeurs de colonne qui ne sont pas définies pour le document peuvent être détectées à l’aide du prédicat NULL .

 

Profondeur du dossier Description
SCOPE Effectue une traversée approfondie du chemin d’accès spécifié, y compris le dossier spécifique et tous les sous-dossiers.
RÉPERTOIRE Effectue une traversée superficielle du chemin d’accès spécifié, en recherchant uniquement le dossier spécifique.

 

Exemples

Pour obtenir des exemples de la clause WHERE, consultez les rubriques de prédicat individuelles liées dans le tableau précédent.

Informations de référence

ReuseWhere, fonction

Propriétés du rowset

FROM, clause

Vue d’ensemble de la syntaxe SQL de recherche

WITH -- AS Group Alias Predicate

Prédicats SCOPE et DIRECTORY

RANK BY Clause

Conceptuel

Prédicats de texte intégral

Prédicats sans texte intégral