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:

Fonte JSON que mostra a enriched_text.entities.text
do objeto* Representação JSON do enriched_text.entities.text

: (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.