Abfrageoperatoren
Sie können Operatoren verwenden, wenn Sie Abfragen schreiben, die mithilfe der Abfrage-API an Discovery übergeben werden.
Die unterstützten Operatortypen unterscheiden sich je nach Abfragetyp:
Operator für Abfragen in natürlicher Sprache (NLQ)
Der Parameter natural_language_query
akzeptiert einen Zeichenfolgewert.
""
(Phrasenabfrage)
Verwenden Sie Anführungszeichen, um ein einzelnes Wort oder einen einzelnen Ausdruck in der Abfrage hervorzuheben, für die eine Übereinstimmung am wichtigsten ist. Die folgende Anforderung wertet beispielsweise Dokumente auf, die den Begriff "Nominierung" enthalten.
{
"natural_language_query":"What is the process for \"nomination\" of bonds?"
}
Die Angabe eines Ausdrucks in Anführungszeichen verhindert nicht, dass Dokumente ohne den Ausdruck zurückgegeben werden. Es gibt lediglich mehr Gewicht auf Dokumente mit der Phrase als diejenigen ohne sie. Die Abfrageergebnisse können beispielsweise auch Dokumente enthalten, die "bonds" oder "process" erwähnen und nicht das Wort "nomination" enthalten.
Die folgende Anforderung erhöht den Ausdruck "Änderung in der Geldpolitik" und stimmt auch mit "Änderung" oder "Währung" oder "Politik" überein.
{
"natural_language_query":"\"change in monetary policy\""
}
Einfache Anführungszeichen (') werden nicht unterstützt. Sie können keine Platzhalterzeichen (*) in Ausdrucksabfragen verwenden.
DQL-Operatoren (Discovery Query Language)
Operatoren trennen die einzelnen Bestandteile einer Abfrage voneinander.
.
(JSON-Begrenzer)
Dieser Begrenzer grenzt die Hierarchieebenen im JSON-Schema voneinander ab.
Das folgende Abfrageargument gibt beispielsweise den Abschnitt des Objekts 'enriched_text' an, der Entitäten und den als Entität erkannten Text enthält.
enriched_text.entities.text
Die JSON-Darstellung dieses Abschnitts sieht wie folgt aus:

:
(enthält)
Dieser Operator gibt den Einschluss des vollständigen Abfragebegriffs an.
Die folgende Abfrage sucht beispielsweise nach Dokumenten, die den Begriff cloud computing
im Feld text
enthalten:
{
"query":"enriched_text.entities.text:\"cloud computing\""
}
Der Operator includes gibt keine teilweise Übereinstimmung für den Abfragebegriff zurück. Wenn Sie eine teilweise Übereinstimmung für einen Begriff finden möchten, verwenden Sie einen Platzhalteroperator mit
dem Operator includes. Wenn Sie beispielsweise nach Vorkommen von TP53
oder p53
im Feld test_results
suchen möchten, findet die folgende Abfrage keine Vorkommen beider Begriffe:
{
"query":"test_results:P53"
}
Fügen Sie stattdessen ein Platzhalterzeichen in die Anforderung ein. Verwenden Sie beispielsweise die folgende Abfrageanforderung. Da der Platzhalteroperator verwendet wird, wurde auch der Begriff in Kleinbuchstaben geändert.
{
"query":"test_results:*p53"
}
Mit dieser Syntax werden Vorkommen von p53
, tp53
, P53
oder TP53
zurückgegeben.
""
(Phrasenabfrage)
Phrasenabfragen stimmen nur mit Vorkommen des gesamten Ausdrucks überein. Die Reihenfolge der Wörter im Ausdruck muss übereinstimmen.
Die folgende Abfrage gibt beispielsweise nur Dokumente zurück, die ein Feld namens quotation
mit dem Text There's no crying in baseball
enthalten.
{
"query":"quotation:\"There's no crying in baseball\""
}
Ein Dokument mit einem quotation
-Feld, in dem Jimmy Dugan said there's no crying in baseball
angegeben ist, wird ebenfalls zurückgegeben. Dokumente, die nur baseball
oder crying
ohne den
gesamten Ausdruck erwähnen, stimmen jedoch nicht überein. Weder ist ein Dokument mit In baseball, there's no crying
. Dokumente, die den richtigen Text im falschen Feld enthalten, werden ebenfalls nicht abgeglichen. Beispiel:
Ein Dokument mit dem Text There's no crying in baseball
im Feld text
wird nicht zurückgegeben.
Einfache Anführungszeichen (') werden nicht unterstützt. Sie können keine Platzhalterzeichen (*) in Ausdrucksabfragen verwenden.
::
(Exakte Übereinstimmung)
Dieser Operator gibt eine exakte Übereinstimmung für den Abfragebegriff an. Bei exakten Übereinstimmungen muss die Groß-/Kleinschreibung beachtet werden.
Die folgende Abfrage sucht beispielsweise nach Dokumenten, die Entitäten des Typs Organization
enthalten:
{
"query":"enriched_text.entities.type::Organization"
}
Der gesamte Inhalt des angegebenen Felds muss mit der angegebenen Phrase übereinstimmen. Die folgende Abfrage findet beispielsweise Dokumente, in denen nur Entitätserwähnungen von IBM Cloud
erkannt werden, nicht IBM Cloud Pak for Data
oder IBM cloud
oder Cloud
.
{
"query":"enriched_text.entities.text::\"IBM Cloud\""
}
Dokumentfelder, die länger als 256 Zeichen sind, können nicht abgeglichen werden.
Um die Abfrageergebnisse für ein bestimmtes Zeichensymbol zu erhalten, siehe folgendes Beispiel:
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>::*¥*"
}'
Diese Beispielabfrage dient zur Abfrage von ¥. Sie können ¥ durch das gewünschte Zeichensymbol ersetzen, nach dem Sie suchen möchten. Die Suche gibt den übereinstimmenden Wert zurück, vorausgesetzt, der Wert des Feldes, das das durchsuchbare Symbol enthält, hat eine Länge von weniger als 256 Zeichen. Außerdem wird das gesamte Dokument abgeglichen, unabhängig davon, welcher Teil eines Dokuments für die Abfrage relevant ist.
:!
(Nicht enthalten)
Dieser Operator gibt an, dass die Ergebnisse keine Übereinstimmung mit dem Abfragebegriff enthalten.
Beispiel:
{
"query":"enriched_text.entities.text:!\"cloud computing\""
}
::!
(Keine genaue Übereinstimmung)
Dieser Operator gibt an, dass die Ergebnisse nicht genau mit dem Abfragebegriff übereinstimmen.
Beispiel:
{
"query":"enriched_text.entities.text::!\"Cloud computing\""
}
Bei exakten Übereinstimmungen muss die Groß-/Kleinschreibung beachtet werden.
Ruft Dokumentfelder ab, die mit dem Abfragebegriff übereinstimmen, wenn das Feld länger als 256 Zeichen ist.
\
(Escape-Zeichen)
Escapezeichen, das den Literalwert des nachfolgenden Operators beibehält.
Die vollständige Liste der gültigen Escapezeichenfolgen in Textabfragen (außer Ausdrucksabfragen):
\"
,\\
,\(
,\)
,\[
,\]
,\,
,\|
,\^
,\~
,\:
,\<=
,\>=
,\<
,\>
,\:!
,\::
,\::!
,\*
,\!
Beispiel: message:\>=D
,method::foo\(String\)
.
In einer Ausdrucksabfrage ist die einzige gültige Escapezeichenfolge \"
.
Beispiel: name:"Shane \"Rapha\" Hendrixson"
, method::"foo(String)"
.
DQL wird als JSON-Zeichenfolgefelder an die Abfrage-API übergeben, für die eine eigene zusätzliche Ebene von Escapezeichen erforderlich ist. Beispiel:
{
"query":"name:\"Shane \\\"Rapha\\\" Hendrixson\""
}
()
, []
(Verschachtelte Gruppierung)
Durch die Bildung von logischen Gruppierungen können spezifischere Informationen angegeben werden.
Beispiel:
{
"query":"enriched_text.entities:(text:IBM,type:Company)"
}
|
(ODER)
Der boolesche Operator für 'oder'.
In dem folgenden Beispiel werden Dokumente zurückgegeben, in denen Google
oder IBM
als Entitäten angegeben sind:
{
"query":"enriched_text.entities.text:Google|enriched_text.entities.text:IBM"
}
Die Ein-/Ausschlussoperatoren (:
, :!
) und die Operatoren für Übereinstimmung (::
, ::!
) haben Vorrang vor dem Operator OR
.
Beispielsweise wird mithilfe der folgenden Syntax nach Dokumenten gesucht, in denen Google
als Entität angegeben ist oder die Zeichenfolge IBM
vorhanden ist:
{
"query":"enriched_text.entities.text:Google|IBM"
}
Es wird wie folgt behandelt:
(enriched_text.entities.text:Google) OR IBM
,
(und)
Der boolesche Operator für 'und'.
In dem folgenden Beispiel werden Dokumente zurückgegeben, in denen sowohl Google
als auch IBM
als Entitäten angegeben sind:
{
"query":"enriched_text.entities.text:Google,enriched_text.entities.text:IBM"
}
Die Ein-/Ausschlussoperatoren (:
, :!
) und die Operatoren für Übereinstimmung (::
, ::!
) haben Vorrang vor dem Operator AND
.
Beispielsweise wird mithilfe der folgenden Syntax nach Dokumenten gesucht, in denen Google
als Entität angegeben ist und die Zeichenfolge IBM
vorhanden ist:
{
"query":"enriched_text.entities.text:Google,IBM"
}
Es wird wie folgt behandelt:
(enriched_text.entities.text:Google) AND IBM
<=, >=, >, <
(Zahlenvergleiche)
Erstellt numerische Vergleiche von less than
oder equal to
, greater than
oder equal to
, greater than
und less than
.
Verwenden Sie numerische Vergleichsoperatoren nur, wenn der Wert number
oder date
ist.
Jeder Wert, der in Anführungszeichen eingeschlossen ist, ist eine Zeichenfolge. Daher ist score>=0.5
eine gültige Abfrage und score>="0.5"
nicht.
Beispiel:
{
"query":"invoice.total>100.50"
}
^x
(Punktemultiplikator)
Erhöht den Wert für die Bewertung eines Suchbegriffs.
Beispiel:
{
"query":"enriched_text.entities.text:IBM^3"
}
*
(Platzhalter)
Ergibt eine Übereinstimmung mit unbekannten Zeichen in einem Suchausdruck. Verwenden Sie bei Platzhaltern keine Großbuchstaben.
Beispiel:
{
"query":"enriched_text.entities.text:ib*"
}
~n
(String-Variation)
Die Anzahl der Zeichenunterschiede, die beim Abgleich einer Zeichenfolge zulässig sind. Die maximale Variationsnummer, die verwendet werden kann, ist 2.
Die folgende Abfrage gibt beispielsweise Dokumente zurück, die car
im Titelfeld sowie cap
,cat
,can
, sat
usw. enthalten:
{
"query":"title:cat~1"
}
Die normalisierte Version des Worts wird für den Abgleich verwendet. Wenn die Eingabe also "cats" enthält, sucht die Suche nach "cat". Dies ist die normalisierte Form der Plural-Katzen.
Wenn eine Phrase übergeben wird, ist jeder Begriff in der Phrase die angegebene Anzahl von Variationen zulässig. Die folgende Eingabe entspricht beispielsweise cat dog
und far log
zusätzlich zu car hog
.
Beispiel:
{
"query":"title:\"car hog\"~1"
}
:*
(Existiert)
Wird verwendet, um alle Ergebnisse zurückzugeben, bei denen das angegebene Feld vorhanden ist.
Beispiel:
{
"query":"title:*"
}
:!*
(Gibt es nicht)
Wird verwendet, um alle Ergebnisse zurückzugeben, die das angegebene Feld nicht enthalten.
Beispiel:
{
"query":"title:!*"
}
Weitere Informationen finden Sie in der API-Referenz Discovery.
Eine Übersicht über Abfragekonzepte enthält die Abfrageübersicht.