Operadores de consulta
É possível usar operadores ao gravar consultas para enviar para o Discovery usando a API de Consulta.
Os tipos de operadores que são suportados diferem por tipo de consulta:
Operador NLQ (Natural Language Query)
O parâmetro natural_language_query aceita um valor de sequência.
"" (Consulta de frase)
Use aspas para enfatizar uma única palavra ou frase na consulta que é mais importante para correspondência Por exemplo, a solicitação a seguir impulsiona documentos que contêm o termo "nomeação" neles.
{
"natural_language_query":"What is the process for \"nomination\" of bonds?"
}
Especificar uma frase entre aspas não impede que os documentos sem a frase sejam retornados. Apenas dá mais peso aos documentos com a frase do que aqueles sem ela. Por exemplo, os resultados da consulta também podem conter documentos que mencionam "bonds" ou "process" e não contêm a palavra "nominações"
O pedido a seguir impulsiona a frase "mudança na política monetária" e também corresponde a "mudança" ou "política monetária" ou "política".
{
"natural_language_query":"\"change in monetary policy\""
}
Aspas simples (') não são suportadas. Não é possível usar curingas (*) em consultas de frase..
Operadores do Discovery Query Language (DQL)
Os operadores são os separadores entre diferentes partes de uma consulta.
. (delimitador JSON)
Esse delimitador separa os níveis da hierarquia no esquema JSON
Por exemplo, o argumento de consulta a seguir identifica a seção do objeto enriched_text que contém entidades e o texto reconhecido como uma entidade.
enriched_text.entities.text
A representação JSON desta seção olha da seguinte forma:
: (Inclui)
Este operador especifica a inclusão do termo de consulta completo.
Por exemplo, a consulta a seguir procura documentos que contenham o termo cloud computing no campo text :
{
"query":"enriched_text.entities.text:\"cloud computing\""
}
O operador inclui não retorna uma correspondência parcial para o termo de consulta. Se você deseja encontrar uma correspondência parcial para um termo, use um operador wildcard com o operador inclui.
Por exemplo, se você deseja encontrar alguma ocorrências de TP53 ou p53 no campo test_results, a seguinte consulta será not localizar ocorrências de ambos os termos:
{
"query":"test_results:P53"
}
Em vez disso, inclua um curinga na solicitação. Por exemplo, use a solicitação de consulta a seguir. Como estamos usando o operador de coringa, também mudamos o termo para minúsloo.
{
"query":"test_results:*p53"
}
Com essa sintaxe, ocorrências de p53, tp53, P53 ou TP53 são todas retornadas.
"" (Consulta de frase)
As consultas de frase correspondem apenas ocorrências de toda a frase A ordem das palavras na frase deve corresponder.
Por exemplo, a consulta a seguir retorna apenas documentos que contêm um campo denominado quotation com o texto There's no crying in baseball.
{
"query":"quotation:\"There's no crying in baseball\""
}
Um documento com um campo quotation que diz Jimmy Dugan said there's no crying in baseball também é retornado No entanto, os documentos que mencionam apenas baseball ou crying sem a frase
inteira não são correspondidos Nem é um documento com In baseball, there's no crying. Os documentos que contêm o texto correto no campo errado também não são correspondidos Por exemplo, um documento com o texto There's no crying in baseball no campo text não é retornado..
Aspas simples (') não são suportadas. Não é possível usar curingas (*) em consultas de frase..
:: (Correspondência exata)
Esse operador especifica uma correspondência exata para o termo de consulta. Correspondências exatos fazem distinção entre maiúsculas e minúsculas.
Por exemplo, a consulta a seguir procura documentos que contenham entidades do tipo Organization:
{
"query":"enriched_text.entities.type::Organization"
}
O conteúdo inteiro do campo que você especificar deve corresponder à frase que você especificar. Por exemplo, a consulta a seguir encontra documentos em que apenas menções a entidade de IBM Cloud são detectadas, não IBM Cloud Pak for Data ou IBM cloud ou Cloud.
{
"query":"enriched_text.entities.text::\"IBM Cloud\""
}
Não é possível corresponder campos de documento com mais de 256 caracteres.
Para obter os resultados da consulta para um determinado símbolo de caractere, veja o exemplo a seguir:
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>::*¥*"
}'
Este exemplo de consulta é para consultar ¥. Você pode substituir ¥ pelo símbolo do caractere necessário que deseja pesquisar. A pesquisa retorna o valor correspondente desde que o valor do campo que inclui o símbolo pesquisável tenha um comprimento inferior a 256 caracteres. Além disso, o documento inteiro é correspondido independentemente de qual parte do documento é relevante para a consulta.
:! (Não inclui)
Esse operador especifica que os resultados não contêm uma correspondência para o termo de consulta.
Por exemplo:
{
"query":"enriched_text.entities.text:!\"cloud computing\""
}
::! (Não é uma correspondência exata)
Esse operador especifica que os resultados não correspondem exatamente ao termo da consulta.
Por exemplo:
{
"query":"enriched_text.entities.text::!\"Cloud computing\""
}
Correspondências exatos fazem distinção entre maiúsculas e minúsculas.
Recuperará campos de documento correspondentes ao termo de consulta se o campo tiver mais de 256 caracteres de comprimento.
\ (Caractere de escape)
Caractere de escape que preserva o valor literal do operador que segue.
A lista completa de sequências de escape válidas em consultas de texto (exceto consultas de frase):
\",\\,\(,\),\[,\],\,,\|,\^,\~,\:,\<=,\>=,\<,\>,\:!,\::,\::!,\*,\!
Por exemplo, message:\>=D,method::foo\(String\)
Dentro de uma consulta de frase, a única sequência de escape válida é \"
Por exemplo, name:"Shane \"Rapha\" Hendrixson", method::"foo(String)"
O DQL é enviado para a API de Consulta como campos de sequência JSON, que requerem sua própria camada adicional de escape, por exemplo:
{
"query":"name:\"Shane \\\"Rapha\\\" Hendrixson\""
}
(), [] (agrupamento aninhado)
Agrupamentos lógicos podem ser formados para definir informações mais específicas.
Por exemplo:
{
"query":"enriched_text.entities:(text:IBM,type:Company)"
}
| (OR)
Operador booleano para "ou".
No exemplo a seguir, os documentos em que Google ou IBM são identificados como entidades são retornados:
{
"query":"enriched_text.entities.text:Google|enriched_text.entities.text:IBM"
}
Os operadores includes (:,:!) e match (::, ::!) têm precedência sobre o operador OR.
Por exemplo, as pesquisas de sintaxe a seguir para documentos em que Google é identificado como uma entidade ou a sequência IBM está presente:
{
"query":"enriched_text.entities.text:Google|IBM"
}
Ele é tratado da seguinte forma:
(enriched_text.entities.text:Google) OR IBM
, (e)
Operador booleano para "e".
No exemplo a seguir, os documentos em que Google e IBM são identificados como entidades são retornados:
{
"query":"enriched_text.entities.text:Google,enriched_text.entities.text:IBM"
}
Os operadores includes (:,:!) e match (::, ::!) têm precedência sobre o operador AND.
Por exemplo, as pesquisas de sintaxe a seguir para documentos em que Google é identificado como uma entidade e a sequência IBM está presente:
{
"query":"enriched_text.entities.text:Google,IBM"
}
Ele é tratado da seguinte forma:
(enriched_text.entities.text:Google) AND IBM
<=, >=, >, < (Comparações numéricas)
Cria comparações numéricas de less than ou equal to, greater than ou equal to, greater than e less than.
Apenas utilize operadores de comparação numérica quando o valor for um number ou date.
Qualquer valor que esteja cercado por citações é uma String. Portanto, score>=0.5 é uma consulta válida e score>="0.5" não é.
Por exemplo:
{
"query":"invoice.total>100.50"
}
^x (Multiplicador de pontuação)
Aumenta o valor de pontuação de um termo de procura.
Por exemplo:
{
"query":"enriched_text.entities.text:IBM^3"
}
* (curinga)
Corresponde caracteres desconhecidos em uma expressão de procura. Não use letras maiúsculas com curingas.
Por exemplo:
{
"query":"enriched_text.entities.text:ib*"
}
~n (Variação de cordas)
O número de diferenças de caracteres permitidas ao corresponder uma sequência. O número máximo de variação que pode ser usado é 2..
Por exemplo, a consulta a seguir retorna documentos que contêm car no campo de título, bem como cap,cat,can, sat e assim por diante:
{
"query":"title:cat~1"
}
A versão normatizada da palavra é utilizada para correspondência. Portanto, se a entrada contiver "gatos", a procura procurará "gato", que é a forma normalizada dos gatos no plural.
Quando uma frase é enviada, cada termo na frase tem permissão para o número especificado de variações. Por exemplo, a entrada a seguir corresponde cat dog e far log além de car hog.
Por exemplo:
{
"query":"title:\"car hog\"~1"
}
:* (Existe)
Usado para retornar todos os resultados em que o campo especificado existe.
Por exemplo:
{
"query":"title:*"
}
:!* (Não existe)
Usado para retornar todos os resultados que não incluem o campo especificado.
Por exemplo:
{
"query":"title:!*"
}
Para obter mais informações, consulte a Discovery referência de API.
Para obter uma visão geral dos conceitos de consulta, veja a Visão geral da consulta.