Operatori di query
Puoi utilizzare gli operatori quando scrivi le query da inoltrare a Discovery utilizzando l'API Query.
I tipi di operatori supportati differiscono per tipo di query:
operatore NLQ (Natural Language Query)
Il parametro natural_language_query
accetta un valore stringa.
""
(Frase interrogativa)
Utilizzare le virgolette per evidenziare una singola parola o frase nella query che è più importante mettere in corrispondenza. Ad esempio, la seguente richiesta incrementa i documenti che contengono il termine "nomination" in essi.
{
"natural_language_query":"What is the process for \"nomination\" of bonds?"
}
La specifica di una frase tra virgolette non impedisce la restituzione di documenti senza la frase. Si limita a dare più peso ai documenti con la frase che a quelli senza di essa. Ad esempio, i risultati della query potrebbero contenere anche documenti che menzionano "bonds" o "process" e non contengono la parola "nomination".
La seguente richiesta rafforza la frase "cambiamento nella politica monetaria" e corrisponde anche a "cambiamento" o "monetario" o "politica".
{
"natural_language_query":"\"change in monetary policy\""
}
Le virgolette singole (') non sono supportate. Non è possibile utilizzare caratteri jolly (*) nelle query della frase.
Operatori DQL (Discovery Query Language)
Gli operatori sono i separatori tra le diverse parti di una query.
.
(delimitatore JSON)
Questo delimitatore separa i livelli di gerarchia nello schema JSON
Ad esempio, il seguente argomento della query identifica la sezione dell'oggetto enriched_text che contiene le entità e il testo riconosciuto come entità.
enriched_text.entities.text
La rappresentazione JSON di questa sezione è simile alla seguente:

:
(Include)
Questo operatore specifica l'inclusione del termine della query completo.
Ad esempio, la seguente query ricerca i documenti che contengono il termine cloud computing
nel campo text
:
{
"query":"enriched_text.entities.text:\"cloud computing\""
}
L'operatore include non restituisce una corrispondenza parziale per il termine della query. Se si desidera trovare una corrispondenza parziale per un termine, utilizzare un operatore jolly con l'operatore
include. Ad esempio, se si desidera trovare le ricorrenze di TP53
o p53
nel campo test_results
, la seguente interrogazione non troverà le ricorrenze di entrambi i termini:
{
"query":"test_results:P53"
}
Includere invece un carattere jolly nella richiesta. Ad esempio, utilizzare la seguente richiesta di query. Poiché stiamo utilizzando l'operatore jolly, abbiamo anche cambiato il termine in minuscolo.
{
"query":"test_results:*p53"
}
Con questa sintassi, vengono restituite tutte le ricorrenze di p53
, tp53
, P53
o TP53
.
""
(Frase interrogativa)
Le query della frase corrispondono solo alle ricorrenze dell'intera frase. L'ordine delle parole nella frase deve corrispondere.
Ad esempio, la seguente query restituisce solo i documenti che contengono un campo denominato quotation
con il testo, There's no crying in baseball
.
{
"query":"quotation:\"There's no crying in baseball\""
}
Viene restituito anche un documento con un campo quotation
che indica Jimmy Dugan said there's no crying in baseball
. Tuttavia, i documenti che menzionano solo baseball
o crying
senza l'intera
frase non corrispondono. Né è un documento con In baseball, there's no crying
. Anche i documenti che contengono il testo corretto nel campo errato non corrispondono. Ad esempio, un documento con il testo There's no crying in baseball
nel campo text
non viene restituito.
Le virgolette singole (') non sono supportate. Non è possibile utilizzare caratteri jolly (*) nelle query della frase.
::
(Corrispondenza esatta)
Questo operatore specifica una corrispondenza esatta per il termine della query. Le corrispondenze esatte sono sensibili a minuscole/maiuscole.
Ad esempio, la seguente query ricerca i documenti che contengono entità di tipo Organization
:
{
"query":"enriched_text.entities.type::Organization"
}
L'intero contenuto del campo specificato deve corrispondere alla frase specificata. Ad esempio, la seguente query trova i documenti in cui vengono rilevate solo le citazioni di entità di IBM Cloud
, non IBM Cloud Pak for Data
o IBM cloud
o Cloud
.
{
"query":"enriched_text.entities.text::\"IBM Cloud\""
}
Non è possibile mettere in corrispondenza i campi del documento che hanno una lunghezza superiore a 256 caratteri.
Per ottenere i risultati della query per un determinato simbolo di carattere, vedere l'esempio seguente:
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>::*¥*"
}'
Questo esempio di query è per interrogare ¥. È possibile sostituire ¥ con il simbolo del carattere richiesto che si desidera cercare. La ricerca restituisce il valore corrispondente, purché il valore del campo che include il simbolo ricercabile abbia una lunghezza inferiore a 256 caratteri. Inoltre, l'intero documento viene abbinato, indipendentemente dalla parte del documento che è rilevante per la query.
:!
(Non include)
Questo operatore specifica che i risultati non contengono una corrispondenza per il termine della query.
Ad esempio:
{
"query":"enriched_text.entities.text:!\"cloud computing\""
}
::!
(Non è una corrispondenza esatta)
Questo operatore specifica che i risultati non corrispondono esattamente al termine della query.
Ad esempio:
{
"query":"enriched_text.entities.text::!\"Cloud computing\""
}
Le corrispondenze esatte sono sensibili a minuscole/maiuscole.
Richiamerà i campi del documento che corrispondono al termine della query se il campo ha una lunghezza superiore a 256 caratteri.
\
(Carattere di fuga)
Carattere escape che conserva il valore letterale dell'operatore che lo segue.
L'elenco completo delle sequenze di escape valide all'interno delle query di testo (tranne le query di frase):
\"
,\\
,\(
,\)
,\[
,\]
,\,
,\|
,\^
,\~
,\:
,\<=
,\>=
,\<
,\>
,\:!
,\::
,\::!
,\*
,\!
Ad esempio, message:\>=D
,method::foo\(String\)
.
In una query di frase, l'unica sequenza di escape valida è \"
.
Ad esempio, name:"Shane \"Rapha\" Hendrixson"
, method::"foo(String)"
.
DQL viene inoltrato all'API Query come campi stringa JSON, che richiedono il proprio livello aggiuntivo di escape, ad esempio:
{
"query":"name:\"Shane \\\"Rapha\\\" Hendrixson\""
}
()
, []
(raggruppamento annidato)
I raggruppamenti logici possono essere formati per specificare informazioni più specifiche.
Ad esempio:
{
"query":"enriched_text.entities:(text:IBM,type:Company)"
}
|
(oppure)
Operatore booleano per "or".
Nel seguente esempio, vengono restituiti i documenti in cui Google
o IBM
sono identificati come entità:
{
"query":"enriched_text.entities.text:Google|enriched_text.entities.text:IBM"
}
Gli operatori di inclusione (:
,:!
) e di corrispondenza (::
, ::!
) hanno la precedenza sull'operatore OR
.
Ad esempio, la seguente sintassi ricerca i documenti in cui Google
è identificato come un'entità o è presente la stringa IBM
:
{
"query":"enriched_text.entities.text:Google|IBM"
}
Viene trattato come segue:
(enriched_text.entities.text:Google) OR IBM
,
(e)
Operatore booleano per "and".
Nel seguente esempio, vengono restituiti i documenti in cui Google
e IBM
sono entrambi identificati come entità:
{
"query":"enriched_text.entities.text:Google,enriched_text.entities.text:IBM"
}
Gli operatori di inclusione (:
,:!
) e di corrispondenza (::
, ::!
) hanno la precedenza sull'operatore AND
.
Ad esempio, la seguente sintassi ricerca i documenti in cui Google
è identificato come entità e la stringa IBM
è presente:
{
"query":"enriched_text.entities.text:Google,IBM"
}
Viene trattato come segue:
(enriched_text.entities.text:Google) AND IBM
<=, >=, >, <
(Confronti numerici)
Crea confronti numerici tra less than
o equal to
, greater than
o equal to
, greater than
e less than
.
Utilizzare gli operatori di confronto numerico solo quando il valore è number
o date
.
Qualsiasi valore racchiuso tra virgolette è una stringa. Pertanto, score>=0.5
è una query valida, mentre score>="0.5"
non lo è.
Ad esempio:
{
"query":"invoice.total>100.50"
}
^x
(Moltiplicatore di punteggio)
Aumenta il valore di punteggio di un termine di ricerca.
Ad esempio:
{
"query":"enriched_text.entities.text:IBM^3"
}
*
(jolly)
Corrisponde a caratteri sconosciuti in un'espressione di ricerca. Non utilizzare lettere maiuscole con i caratteri jolly.
Ad esempio:
{
"query":"enriched_text.entities.text:ib*"
}
~n
(Variazione di stringa)
Il numero di differenze di caratteri consentite durante la corrispondenza di una stringa. Il numero massimo di variazione che può essere utilizzato è 2.
Ad esempio, la seguente query restituisce documenti che contengono car
nel campo del titolo, oltre a cap
,cat
,can
, sat
e così via:
{
"query":"title:cat~1"
}
La versione normalizzata della parola viene utilizzata per la corrispondenza. Pertanto, se l'input contiene "cats", la ricerca cerca "cat", che è la forma normalizzata dei gatti plurali.
Quando una frase viene inoltrata, a ciascun termine nella frase è consentito il numero specificato di variazioni. Ad esempio, il seguente input corrisponde a cat dog
e far log
oltre a car hog
.
Ad esempio:
{
"query":"title:\"car hog\"~1"
}
:*
(Esiste)
Utilizzato per restituire tutti i risultati in cui esiste il campo specificato.
Ad esempio:
{
"query":"title:*"
}
:!*
(Non esiste)
Utilizzato per restituire tutti i risultati che non includono il campo specificato.
Ad esempio:
{
"query":"title:!*"
}
Per ulteriori informazioni, vedi il Riferimento API Discovery.
Per una panoramica dei concetti di query, vedi Panoramica delle query.