Operadores de consulta

Puede utilizar operadores al escribir consultas para enviarlas a Discovery utilizando la API de consulta.

Los tipos de operadores soportados difieren según el tipo de consulta:

Operador de consulta de lenguaje natural (NLQ)

El parámetro natural_language_query acepta un valor de serie.

"" (Consulta de frase)

Utilice comillas para enfatizar una sola palabra o frase en la consulta que es más importante que coincida. Por ejemplo, la siguiente solicitud aumenta los documentos que contienen el término "nominación" en ellos.

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

La especificación de una frase entrecomillada no impide que se devuelvan documentos sin la frase. Simplemente da más peso a los documentos con la frase que a los que no la tienen. Por ejemplo, los resultados de la consulta también pueden contener documentos que mencionan "enlaces" o "proceso" y no contienen la palabra "nominación".

La siguiente solicitud aumenta la frase "cambio en la política monetaria" y también coincide con "cambio" o "monetario" o "política".

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

Las comillas simples (') no están soportadas. No puede utilizar comodines (*) en consultas de frase.

Operadores DQL (Discovery Query Language)

Los operadores son los separadores entre diferentes partes de una consulta.

. (delimitador JSON)

Este delimitador separa los niveles de jerarquía en el esquema JSON.

Por ejemplo, el siguiente argumento de consulta identifica la sección del objeto enriched_text que contiene entidades y el texto reconocido como entidad.

enriched_text.entities.text

La representación JSON de esta sección tiene el siguiente aspecto:

Fuente JSON que muestra la enriched_text.entities.text
del objeto*Representación JSON del enriched_text.entities.text

: (Incluye)

Este operador especifica la inclusión del término de consulta completo.

Por ejemplo, la consulta siguiente busca documentos que contengan el término cloud computing en el campo text :

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

El operador includes no devuelve una coincidencia parcial para el término de consulta. Si desea encontrar una coincidencia parcial para un término, utilice un operador comodín con el operador includes. Por ejemplo, si desea encontrar apariciones de TP53 o p53 en el campo test_results, la consulta siguiente no encontrará apariciones de ambos términos:

{
  "query":"test_results:P53"
}

En su lugar, incluya un comodín en la solicitud. Por ejemplo, utilice la siguiente solicitud de consulta. Debido a que estamos utilizando el operador comodín, también cambiamos el término a minúsculas.

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

Con esta sintaxis, se devuelven todas las apariciones de p53, tp53, P53 o TP53.

"" (Consulta de frase)

Las consultas de frase sólo coinciden con las apariciones de toda la frase. El orden de las palabras en la frase debe coincidir.

Por ejemplo, la consulta siguiente sólo devuelve documentos que contienen un campo denominado quotation con el texto There's no crying in baseball.

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

También se devuelve un documento con un campo quotation que indica Jimmy Dugan said there's no crying in baseball. Sin embargo, los documentos que sólo mencionan baseball o crying sin la frase completa no coinciden. Tampoco es un documento con In baseball, there's no crying. Los documentos que contienen el texto correcto en el campo incorrecto tampoco coinciden. Por ejemplo, no se devuelve un documento con el texto There's no crying in baseball en el campo text.

Las comillas simples (') no están soportadas. No puede utilizar comodines (*) en consultas de frase.

:: (Coincidencia exacta)

Este operador especifica una coincidencia exacta para el término de la consulta. Las coincidencias exactas son sensibles a mayúsculas y minúsculas.

Por ejemplo, la consulta siguiente busca documentos que contienen entidades de tipo Organization:

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

El contenido completo del campo que especifique debe coincidir con la frase que especifique. Por ejemplo, la consulta siguiente busca documentos en los que solo se detectan menciones de entidad de IBM Cloud, no IBM Cloud Pak for Data o IBM cloud o Cloud.

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

No puede coincidir con campos de documento que tengan más de 256 caracteres de longitud.

Para obtener los resultados de la consulta de un símbolo de carácter determinado, consulte el siguiente ejemplo:

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>::*¥*"
  }'

Esta consulta de ejemplo es para consultar ¥. Puede sustituir ¥ por el símbolo de carácter requerido que desee buscar. La búsqueda devuelve el valor coincidente siempre que el valor del campo que incluye el símbolo buscado tenga una longitud inferior a 256 caracteres. Además, se coteja todo el documento, independientemente de qué parte de un documento sea relevante para la consulta.

:! (No incluye)

Este operador especifica que los resultados no contienen una coincidencia con el término de la consulta.

Por ejemplo:

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

::! (No es una coincidencia exacta)

Este operador especifica que los resultados no coinciden exactamente con el término de la consulta.

Por ejemplo:

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

Las coincidencias exactas son sensibles a mayúsculas y minúsculas.

Recuperará los campos de documento que coinciden con el término de consulta si el campo tiene más de 256 caracteres de longitud.

\ (Caracter de escape)

Carácter de escape que conserva el valor literal del operador que le sigue.

La lista completa de secuencias de escape válidas dentro de las consultas de texto (excepto las consultas de frase):

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

Por ejemplo, message:\>=D,method::foo\(String\).

Dentro de una consulta de frase, la única secuencia de escape válida es \".

Por ejemplo, name:"Shane \"Rapha\" Hendrixson", method::"foo(String)".

DQL se envía a la API de consulta como campos de serie JSON, que requieren su propia capa adicional de escape, por ejemplo:

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

()``[] (Agrupación anidada)

Las agrupaciones lógicas se pueden definir para especificar información más específica.

Por ejemplo:

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

| (o)

Operador booleano "or".

En el ejemplo siguiente se devuelven los documentos en los que Google o IBM se identifican como entidades:

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

Los operadores de inclusiones (:,:!) y de coincidencia (::, ::!) tienen prioridad sobre el operador OR.

Por ejemplo, la siguiente sintaxis busca documentos en los que Google se identifica como una entidad o la serie IBM está presente:

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

Se trata de la siguiente manera:

(enriched_text.entities.text:Google) OR IBM

, (y)

Operador booleano "and".

En el ejemplo siguiente se devuelven los documentos en los que Google y IBM se identifican como entidades:

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

Los operadores de inclusiones (:,:!) y de coincidencia (::, ::!) tienen prioridad sobre el operador AND.

Por ejemplo, la siguiente sintaxis busca documentos en los que Google se identifica como una entidad y la serie IBM está presente:

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

Se trata de la siguiente manera:

(enriched_text.entities.text:Google) AND IBM

<=, >=, >, < (Comparaciones numéricas)

Crea comparaciones numéricas de less than o equal to, greater than o equal to, greater than y less than.

Utilice sólo operadores de comparación numérica cuando el valor sea number o date.

Cualquier valor que esté entre comillas es una serie. Por lo tanto, score>=0.5 es una consulta válida y score>="0.5" no lo es.

Por ejemplo:

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

^x (Multiplicador de puntuación)

Incrementa el valor de puntuación de un término de búsqueda.

Por ejemplo:

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

* (Comodín)

Establece la coincidencia de un número cualquiera de caracteres en una expresión de búsqueda. No utilice mayúsculas con comodines.

Por ejemplo:

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

~n (Variación de cadena)

El número de diferencias de caracteres que se permiten al comparar una serie. El número máximo de variación que se puede utilizar es 2.

Por ejemplo, la consulta siguiente devuelve documentos que contienen car en el campo de título, así como cap,cat,can, sat, etc.:

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

La versión normalizada de la palabra se utiliza para la coincidencia. Por lo tanto, si la entrada contiene "cats", la búsqueda busca "cat", que es la forma normalizada de los gatos plurales.

Cuando se envía una frase, se permite a cada término de la frase el número especificado de variaciones. Por ejemplo, la entrada siguiente coincide con cat dog y far log además de car hog.

Por ejemplo:

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

:* (Existe)

Se utiliza para devolver todos los resultados en los que existe el campo especificado.

Por ejemplo:

{
  "query":"title:*"
}

:!* (No existe)

Se utiliza para devolver todos los resultados que no incluyen el campo especificado.

Por ejemplo:

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

Para obtener más información, consulte la Discovery .

Para obtener una visión general sobre los conceptos de la consulta, revise la Visión general de consulta.