Saltar al contenido principal
Una consulta especifica qué palabras o combinaciones de palabras debe contener un documento. El lenguaje de consulta que usan los scripts de extracción se basa en XML.

Estructura básica de la consulta

Una consulta sencilla tiene este aspecto:
Los siguientes elementos componen una consulta: El elemento <Contain> puede incluir cualquier número de los siguientes elementos, en cualquier orden: Cada uno de estos elementos debe contener uno de los siguientes:
El elemento <Contain> debe contener al menos un elemento <Required> o <Optional>.

Atributos del elemento Contain

Se pueden especificar restricciones adicionales para una combinación de formas de palabra en los atributos de la etiqueta <Contain>.

Atributo MinCount

Especifique el número mínimo de elementos de una combinación de formas de palabra en un atributo MinCount. Cada elemento es una forma de palabra o una cadena de formas de palabra devuelta por la subconsulta. El valor predeterminado del atributo es 1. El valor de este parámetro no debe ser mayor que el número total de elementos <Required> y <Optional> de la combinación de formas de palabra. Este parámetro resulta útil cuando una combinación de formas de palabra contiene uno o varios elementos <Optional>. La siguiente consulta busca el primer o el segundo parámetro:
La siguiente consulta encuentra al menos tres de las cuatro palabras especificadas en ella, dos de las cuales son obligatorias:
Esta consulta encuentra las siguientes frases: “US President Barack Obama”, “President Barack Obama” y “US President Obama.”

Atributo KeepOrder

Para especificar un orden fijo de los elementos en una combinación de formas de palabra, use el atributo KeepOrder de tipo Boolean. El valor predeterminado del atributo es false. La siguiente consulta especifica que el orden de los elementos es fijo:
La combinación “primera tercera segunda tercera” no coincidirá con la consulta, aunque esta sí contiene una secuencia de palabras en el orden requerido. KeepOrder también se aplica a cualquier elemento <Except>. Las palabras correspondientes a los elementos <Except> de una consulta no deben aparecer entre las palabras que esos elementos separan en la consulta. Sin embargo, pueden aparecer en cualquier otra posición fuera de las secuencias de consulta con orden fijo. Por ejemplo, si modifica la consulta anterior colocando la forma de palabra “segunda” en un elemento <Except> en lugar de <Required>, un documento que contenga la combinación de formas de palabra “primera tercera segunda” coincidirá con la consulta (pero la forma de palabra “segunda” no se incluirá en el resultado). Si después elimina el atributo KeepOrder, un documento que contenga la combinación de formas de palabra “primera tercera segunda” no se incluirá en el resultado, porque la forma de palabra “segunda” no debe aparecer en ningún lugar del texto de un documento.

Atributos MinDistance y MaxDistance

Los atributos MinDistance y MaxDistance especifican las distancias mínima y máxima entre palabras en una consulta. Estos atributos no tienen valores predeterminados. Si no se especifica alguno de estos dos atributos, no se aplica ninguna limitación de distancia. La distancia entre palabras se mide en palabras y se calcula como la diferencia entre las posiciones de las dos palabras correspondientes. La distancia entre dos palabras contiguas es 1, por lo que el valor mínimo de cualquiera de estos atributos es 1. MaxDistance debe ser mayor o igual que MinDistance. La distancia entre dos cadenas de palabras se calcula de la siguiente manera. Si las cadenas no se superponen, la distancia se calcula como la diferencia entre la posición de la palabra situada más a la izquierda de la cadena de la derecha y la posición de la palabra situada más a la derecha de la cadena de la izquierda. Si las cadenas se superponen, se considera que la distancia es 0. Por ejemplo, en la frase “The quick brown fox jumped over the lazy dog,” la distancia entre las cadenas “quick fox” y “lazy dog” es 4, y la distancia entre las cadenas “quick fox” y “brown lazy dog” es 0. Para los elementos <Except>, la distancia entre palabras se calcula de la siguiente manera:
  • Si KeepOrder="true", la palabra no debe aparecer dentro de la distancia especificada respecto a las palabras vecinas de la cadena (es decir, las palabras entre las que aparece en la consulta). Al mismo tiempo, la distancia entre los elementos vecinos del elemento <Except> debe estar dentro del rango especificado.
  • Si KeepOrder="false", la palabra no debe aparecer dentro de la distancia especificada respecto a ninguna otra palabra de la cadena.
La siguiente consulta usa KeepOrder="true" y MaxDistance="2":
Esta consulta encuentra frases como “sodium carborate decahydrate” y “sodium sulfate decahydrate”. La siguiente consulta usa KeepOrder="false" y MaxDistance="2":
Esta consulta encuentra solo “sulfato de sodio decahidratado”, porque la palabra “tetraborato” está en las etiquetas <Except> y la distancia máxima entre “tetraborato” y “sodio” es de dos palabras.

Elemento Form

La consulta de una forma de palabra se especifica mediante un elemento <Form>. Este elemento puede contener los siguientes elementos:
  • <Attributes> — Elemento opcional que contiene una consulta para los atributos de una forma de palabra. Para obtener más información, consulte cuándo usar scripts de extracción.
  • <Text> — Elemento opcional que contiene el texto Unicode de una forma de palabra. Si no se especifica ningún texto, cualquier palabra que coincida con la consulta de atributos coincidirá con la consulta. En este caso, la consulta de atributos es obligatoria.
Se pueden especificar condiciones de búsqueda adicionales para una forma de palabra en los atributos de la etiqueta <Form>.

Atributo SearchType

El tipo de búsqueda de forma de palabra puede especificarse en el atributo SearchType de la etiqueta <Form>. Este atributo puede tener los siguientes valores: El atributo SearchType es opcional y, de forma predeterminada, se establece en AllFormsSearch.

Atributo CaseSensitive

Para las búsquedas con distinción entre mayúsculas y minúsculas, puede usarse el atributo CaseSensitive de la etiqueta <Form>. Este atributo es opcional y, de manera predeterminada, se establece en false. La siguiente consulta usa los atributos SearchType y CaseSensitive de la etiqueta <Form>:
Esta consulta busca el acrónimo WHO exactamente con esta forma, lo que ayuda a evitar una gran cantidad de resultados redundantes que contienen “who”, “whom” o “whose”.

Elemento Attributes

Una consulta de atributos de forma de palabra es una expresión lógica construida con los operadores AND, OR y NOT. NOT es un operador unario, mientras que AND y OR son n-arios. Los operandos de esta expresión lógica son valores de tipo Bool. Esta expresión lógica se escribe en forma de árbol. El resultado de la consulta son las formas de palabra del texto de un documento que cumplen esta expresión lógica. Para obtener atributos de forma de palabra, use un elemento <Attributes>. Este elemento puede contener los siguientes elementos: El elemento <Not> se construye de la misma manera que el elemento <Attributes> y solo puede contener uno de estos elementos. Los elementos <Or> y <And> deben contener al menos dos de estos elementos. La etiqueta <Attribute> tiene un atributo SearchType opcional que especifica el tipo de búsqueda de atributos. Este atributo puede tener los siguientes valores:
  • ExactSearch — Busca el atributo exactamente en la forma especificada en la consulta.
  • PrefixSearch — Busca atributos que comiencen con el texto especificado.
La búsqueda de atributos siempre distingue entre mayúsculas y minúsculas. El atributo SearchType se establece en ExactSearch de forma predeterminada. Suponga que tiene un documento en el que ya ha identificado:
  • objetos NER, llamando a la función ExtractNerObjects
  • formas de palabra de un diccionario de usuario llamado dictionary, llamando a la función ExtractWordsFromUserDictionary
  • todos los objetos que satisfacen una expresión regular pasada como parámetro, llamando a la función ExtractRegularExpression
Suponga que la colección resultante de estos objetos se llama regExp.
El nombre de la colección se puede usar en consultas XML realizadas en el documento indexado. Se puede acceder a la propia colección resultante mediante su nombre.
Una consulta de atributos de forma de palabra tendría este aspecto:
Esta consulta busca una frase de dos palabras, donde la primera palabra debe coincidir con la expresión regular especificada y la segunda debe ser un nombre permitido de una organización. Los dígitos que aparecen después de los nombres de los atributos identifican las palabras requeridas en los objetos detectados de varias palabras que se han indexado con los atributos correspondientes. Por ejemplo, una expresión regular llamada date puede encontrar una fecha con el formato “31 de mayo de 2019”. Entonces, date1 corresponde a la palabra “mayo”, date2 corresponde a “31” y date3 corresponde a “2019”.

Elemento FormSet

Una consulta para varias formas de palabra se especifica mediante un elemento <FormSet>. Este tipo de consulta combina varias consultas de una sola forma mediante OR. Equivale a una consulta <Query> en la que todas las subconsultas son consultas opcionales de formas de palabra. Sin embargo, en una consulta <FormSet>, puede especificar una consulta de atributos común a todas las formas. Esto permite realizar búsquedas más eficientes cuando se usa ExactSearch para encontrar todas las formas de palabra, existe una consulta de atributos para cada forma y todas esas consultas de atributos comparten algún fragmento común. Un elemento <FormSet> contiene los siguientes elementos:
  • <Attributes> — Elemento opcional que contiene una consulta para los atributos de la forma. Esta consulta se combina con las consultas de atributos de la forma mediante AND.
  • <Form> — Elemento obligatorio que contiene una consulta para una forma de palabra. Un elemento <FormSet> debe contener al menos un elemento <Form>.

Consulta de ejemplo para extraer direcciones en XML

El resultado de una consulta de extracción de direcciones es una cadena de texto que contiene la primera palabra del país, la primera palabra de la calle, la primera palabra de la ciudad, la primera palabra del estado y la primera palabra del código postal (en ese orden, siempre que no estén separadas entre sí por más de 5 palabras). Las palabras consecutivas que forman un componente (por ejemplo, el nombre de una calle) también se numeran en el índice, empezando por 1.
El resultado de una consulta para extraer direcciones se guarda en un campo repetible xmlQueryResult: