IBM Cloud Docs
Opérateurs de requête

Opérateurs de requête

Vous pouvez utiliser des opérateurs lorsque vous écrivez des requêtes à soumettre à Discovery à l'aide de l'API Query.

Les types d'opérateurs pris en charge diffèrent selon le type de requête:

Opérateur NLQ (Natural Language Query)

Le paramètre natural_language_query accepte une valeur de chaîne.

"" (Recherche de phrases)

Utilisez des guillemets pour mettre en évidence un mot ou une phrase unique dans la requête qui doit correspondre le plus. Par exemple, la demande suivante augmente les documents qui contiennent le terme "nomination".

{
  "natural_language_query":"What is the process for \"nomination\" of bonds?"
}

La spécification d'une phrase entre guillemets n'empêche pas le renvoi de documents sans l'expression. Il donne simplement plus de poids aux documents avec la phrase que ceux sans elle. Par exemple, les résultats de la requête peuvent également contenir des documents qui mentionnent des "obligations" ou des "processus" et qui ne contiennent pas le mot "nomination".

La demande suivante renforce l'expression "changement dans la politique monétaire" et correspond également à "changement" ou "politique monétaire".

{
  "natural_language_query":"\"change in monetary policy\""
}

Les guillemets simples (') ne sont pas pris en charge. Vous ne pouvez pas utiliser de caractères génériques (*) dans les requêtes de phrase.

Opérateurs DQL (Discovery Query Language)

Les opérateurs sont les séparateurs entre les différentes parties d'une requête.

. (délimiteur JSON)

Ce délimiteur sépare les niveaux de hiérarchie dans le schéma JSON.

Par exemple, l'argument de requête suivant identifie la section de l'objet enriched_text qui contient les entités et le texte reconnu comme une entité.

enriched_text.entities.text

La représentation JSON de cette section se présente comme suit:

Source JSON qui montre la enriched_text.entities.text
de l'objet* Représentation JSON du enriched_text.entities.text

: (y compris)

Cet opérateur spécifie l'inclusion du terme de requête complet.

Par exemple, la requête suivante recherche les documents contenant le terme cloud computing dans la zone text :

{
  "query":"enriched_text.entities.text:\"cloud computing\""
}

L'opérateur inclusions ne renvoie pas de correspondance partielle pour le terme de requête. Si vous souhaitez rechercher une correspondance partielle pour un terme, utilisez un opérateur wildcard avec l'opérateur inclut. Par exemple, si vous souhaitez rechercher des occurrences de TP53 ou de p53 dans la zone test_results, la requête suivante ne trouve pas les occurrences des deux termes:

{
  "query":"test_results:P53"
}

A la place, incluez un caractère générique dans la demande. Par exemple, utilisez la demande de requête suivante. Comme nous utilisons l'opérateur générique, nous avons également modifié le terme en minuscules.

{
  "query":"test_results:*p53"
}

Avec cette syntaxe, les occurrences de p53, tp53, P53 ou TP53 sont toutes renvoyées.

"" (Recherche de phrases)

Les requêtes d'expression ne correspondent qu'aux occurrences de l'expression entière. L'ordre des mots dans la phrase doit correspondre.

Par exemple, la requête suivante renvoie uniquement les documents contenant une zone nommée quotation avec le texte There's no crying in baseball.

{
  "query":"quotation:\"There's no crying in baseball\""
}

Un document avec une zone quotation indiquant Jimmy Dugan said there's no crying in baseball est également renvoyé. Cependant, les documents qui mentionnent uniquement baseball ou crying sans la phrase entière ne sont pas mis en correspondance. Aucun document n'est associé à In baseball, there's no crying. Les documents qui contiennent le texte approprié dans la mauvaise zone ne sont pas non plus mis en correspondance. Par exemple, un document dont le texte est There's no crying in baseball dans la zone text n'est pas renvoyé.

Les guillemets simples (') ne sont pas pris en charge. Vous ne pouvez pas utiliser de caractères génériques (*) dans les requêtes de phrase.

:: (Correspondance exacte)

Cet opérateur indique une correspondance exacte pour le terme de requête. Les correspondances exactes sont sensibles à la casse.

Par exemple, la requête suivante recherche des documents qui contiennent des entités de type Organization:

{
  "query":"enriched_text.entities.type::Organization"
}

Le contenu complet de la zone que vous spécifiez doit correspondre à la phrase que vous spécifiez. Par exemple, la requête suivante recherche des documents dans lesquels seules les mentions d'entité de IBM Cloud sont détectées, et non IBM Cloud Pak for Data, IBM cloud ou Cloud.

{
  "query":"enriched_text.entities.text::\"IBM Cloud\""
}

Ne peut pas correspondre à des zones de document d'une longueur supérieure à 256 caractères.

Pour obtenir les résultats de la requête pour un symbole de caractère donné, voir l'exemple suivant :

curl -X POST "https://api.jp-tok.discovery.watson.cloud.ibm.com/instances/<instance-id>/v2/projects/<project-id>/query?version=2023-03-31" \
  -u "apikey:<wd-api-key>" \
  --header "Content-Type: application/json" \
  --data '{
    "query": "<field-with-symbol>::*¥*"
  }'

Cet exemple de requête consiste à rechercher ¥. Vous pouvez remplacer ¥ par le symbole du caractère que vous souhaitez rechercher. La recherche renvoie la valeur correspondante à condition que la valeur du champ qui comprend le symbole recherchable ait une longueur inférieure à 256 caractères. En outre, l'ensemble du document est mis en correspondance, quelle que soit la partie du document correspondant à la requête.

:! (Ne comprend pas)

Cet opérateur indique que les résultats ne contiennent pas de correspondance pour le terme de la requête.

Par exemple :

{
  "query":"enriched_text.entities.text:!\"cloud computing\""
}

::! (Pas de correspondance exacte)

Cet opérateur indique que les résultats ne correspondent pas exactement au terme de la requête.

Par exemple :

{
  "query":"enriched_text.entities.text::!\"Cloud computing\""
}

Les correspondances exactes sont sensibles à la casse.

Extrait les zones de document correspondant au terme de requête si la longueur de la zone est supérieure à 256 caractères.

\ (Caractère d'échappement)

Caractère d'échappement qui conserve la valeur littérale de l'opérateur qui la suit.

Liste complète des séquences d'échappement valides dans les requêtes de texte (à l'exception des requêtes d'expression):

\",\\,\(,\),\[,\],\,,\|,\^,\~,\:,\<=,\>=,\<,\>,\:!,\::,\::!,\*,\!

Par exemple, message:\>=D,method::foo\(String\).

Dans une requête de phrase, la seule séquence d'échappement valide est \".

Par exemple, name:"Shane \"Rapha\" Hendrixson", method::"foo(String)".

Le langage DQL est soumis à l'API de requête en tant que zones de chaîne JSON, qui requièrent leur propre couche supplémentaire d'échappement, par exemple:

{
  "query":"name:\"Shane \\\"Rapha\\\" Hendrixson\""
}

()``[] (Groupement imbriqué)

Des groupements logiques peuvent être constitués pour spécifier des informations plus spécifiques.

Par exemple :

{
  "query":"enriched_text.entities:(text:IBM,type:Company)"
}

| (ou)

Opérateur booléen pour "ou".

Dans l'exemple suivant, les documents dans lesquels Google ou IBM sont identifiés en tant qu'entités sont renvoyés :

{
  "query":"enriched_text.entities.text:Google|enriched_text.entities.text:IBM"
}

Les opérateurs includes (:,:!) et match (::, ::!) ont priorité sur l'opérateur OR.

Par exemple, la syntaxe suivante recherche les documents dans lesquels Google est identifié comme une entité ou dans lesquels la chaîne IBM est présente :

{
  "query":"enriched_text.entities.text:Google|IBM"
}

Il est traité comme suit :

(enriched_text.entities.text:Google) OR IBM

, (et)

Opérateur booléen pour "et".

Dans l'exemple suivant, les documents dans lesquels Google et IBM sont identifiés comme des entités sont renvoyés :

{
  "query":"enriched_text.entities.text:Google,enriched_text.entities.text:IBM"
}

Les opérateurs includes (:,:!) et match (::, ::!) ont priorité sur l'opérateur AND.

Par exemple, la syntaxe suivante recherche les documents dans lesquels Google est identifié comme une entité et où la chaîne IBM est présente :

{
  "query":"enriched_text.entities.text:Google,IBM"
}

Il est traité comme suit :

(enriched_text.entities.text:Google) AND IBM

<=, >=, >, < (Comparaisons numériques)

Crée des comparaisons numériques entre less than ou equal to, greater than ou equal to, greater than et less than.

Utilisez uniquement des opérateurs de comparaison numérique lorsque la valeur est number ou date.

Toute valeur entourée de guillemets est une chaîne. Par conséquent, score>=0.5 est une requête valide et score>="0.5" ne l'est pas.

Par exemple :

{
  "query":"invoice.total>100.50"
}

^x (multiplicateur de score)

Augmente la valeur de score d'un terme de recherche.

Par exemple :

{
  "query":"enriched_text.entities.text:IBM^3"
}

* (joker)

Etablit des correspondances pour des caractères inconnus dans une expression de recherche. N'utilisez pas de majuscules avec les caractères génériques.

Par exemple :

{
  "query":"enriched_text.entities.text:ib*"
}

~n (Variante de la corde)

Nombre de différences de caractères autorisées lors de la mise en correspondance d'une chaîne. Le nombre maximal de variations pouvant être utilisé est 2.

Par exemple, la requête suivante renvoie des documents qui contiennent car dans la zone de titre, ainsi que cap,cat,can, sat, etc.:

{
  "query":"title:cat~1"
}

La version normalisée du mot est utilisée pour la mise en correspondance. Par conséquent, si l'entrée contient "chats", la recherche recherche "chat", qui est la forme normalisée des chats du pluriel.

Lorsqu'une phrase est soumise, chaque terme de la phrase est autorisé avec le nombre de variations spécifié. Par exemple, l'entrée suivante correspond à cat dog et far log en plus de car hog.

Par exemple :

{
  "query":"title:\"car hog\"~1"
}

:* (Existe)

Utilisé pour renvoyer tous les résultats où le champ spécifié existe.

Par exemple :

{
  "query":"title:*"
}

:!* (N'existe pas)

Utilisé pour renvoyer tous les résultats qui ne contiennent pas le champ spécifié.

Par exemple :

{
  "query":"title:!*"
}

Pour plus d'informations, voir la référence d'API Discovery.

Pour une présentation des concepts de requête, voir Présentation des requêtes.