Compartir a través de


Operadores de lenguaje de consulta FAST (FQL)

Última modificación: viernes, 01 de julio de 2011

Hace referencia a: SharePoint Server 2010

En este artículo
Introducción a los operadores de FQL
AND
ANDNOT
ANY
COUNT
DATETIME
ENDS-WITH
EQUALS
FILTER
FLOAT
INT
NEAR
NOT
ONEAR
OR
PHRASE
RANGE
RANK
STARTS-WITH
STRING
XRANK

Los operadores de lenguaje de consulta FAST (FQL) son palabras clave que especifican las operaciones de valor booleano o de otras restricciones a los operandos. La sintaxis del operador de FQL es la siguiente:

[property-spec:]operator(operand [,operand]* [, parameter="value"]*)

En la sintaxis:

  • property-spec es una especificación de propiedad opcional seguida por el operador "in".

  • operator es una palabra clave que especifica una operación para llevar a cabo.

  • operand es una expresión de término u otro operador.

  • parameter es el nombre de un valor que cambia el comportamiento del operador.

  • value es el valor que se usa para el nombre de parámetro.

Los nombres de operadores, los nombres de parámetros y los valores de texto de los parámetros no distinguen entre mayúsculas y minúsculas. Se permite espacio en blanco dentro del cuerpo del operador, pero se omite a menos que se encierre entre comillas dobles.

Introducción a los operadores de FQL

FQL es compatible con los siguientes tipos de operadores:

Tipo

Descripción

Operadores

Cadena

Permite especificar las operaciones de consulta en una cadena de términos. Este es el operador más común que se usa en términos de texto.

STRING

Booleano

Permite combinar términos y subexpresiones en una consulta.

AND, OR, ANY, ANDNOT, NOT, COUNT

Proximidad

Permite especificar la proximidad de los términos de consulta en una secuencia de coincidencia de texto.

NEAR, ONEAR, PHRASE, STARTS-WITH, ENDS-WITH, EQUALS

Numérico

Permite especificar condiciones numéricas en la consulta.

RANGE, INT, FLOAT, DATETIME

Relevancia

Permite influir en la evaluación de relevancia de una consulta.

RANK, XRANK, FILTER

En la siguiente tabla se proporciona una lista de los operadores compatibles.

Operador

Descripción

Tipo

AND

Devuelve únicamente elementos que coinciden con todos los operandos AND.

Booleano

ANDNOT

Devuelve únicamente elementos que coinciden con el primer operando y que no coinciden con los operandos subsiguientes.

Booleano

ANY

Similar al operador OR excepto que la clasificación dinámica (la puntuación de relevancia en el conjunto de resultados) no se ve afectada por el número de operandos que coinciden ni por la distancia entre los términos y el elemento.

Booleano

COUNT

Permite especificar el número de repeticiones del término de consulta que debe incluir un elemento que se devuelva como resultado. El operando puede ser un término de consulta único, una frase o un término de consulta comodín.

Booleano

DATETIME

Proporciona escritura explícita de valores numéricos.

La conversión de tipo explícita es opcional y generalmente no es necesaria. El tipo del término de consulta se detecta en función del tipo de la propiedad numérica de objetivo administrada.

Numérico

ENDS-WITH

Especifica que una palabra o frase debe aparecer al final de una propiedad administrada.

Proximidad

EQUALS

Especifica que una palabra o frase debe proporcionar una coincidencia de token exacta con la propiedad administrada.

Proximidad

FILTER

Se usa para realizar consultas en metadatos u otros datos estructurados.

Relevancia

FLOAT

Proporciona escritura explícita de valores numéricos.

La conversión de tipo explícita es opcional y generalmente no es necesaria. El tipo del término de consulta se detecta en función del tipo de la propiedad numérica de objetivo administrada.

Numérico

INT

Proporciona escritura explícita de valores numéricos.

La conversión de tipo explícita es opcional y generalmente no es necesaria. El tipo del término de consulta se detecta en función del tipo de la propiedad numérica de objetivo administrada.

Numérico

NEAR

Restringe el conjunto de resultados a aquellos elementos que tienen N términos dentro de una determinada distancia entre sí.

Proximidad

NOT

Devuelve solo los elementos que no coinciden con el operando. El operando puede ser cualquier expresión FQL válida.

Booleano

ONEAR

La variante ordenada de NEAR y requiere una coincidencia ordenada de los términos. El operador ONEAR puede usarse para restringir el conjunto de resultados a los elementos que tienen N términos dentro de una determinada distancia entre sí.

Proximidad

OR

Devuelve solo los elementos que coinciden al menos con uno de los operandos OR. Los elementos que coincidan obtendrán una clasificación dinámica (puntuación de relevancia en el conjunto de resultados) más alta si coinciden más de los operandos OR.

Booleano

PHRASE

Devuelve sólo los elementos que coinciden con una cadena exacta de tokens.

Proximidad

RANGE

Permite expresiones con coincidencia de rango. El operador RANGE se usa para propiedades administradas numéricas y de fecha y hora.

Numérico

RANK

Permite aumentar el rango dinámico de elementos en función de determinadas repeticiones del término sin cambiar los elementos que coinciden con la consulta. Una expresión RANK contiene un componente que debe coincidir y uno o varios componentes que contribuyen solo al rango dinámico.

Relevancia

STARTS-WITH

Especifica que una palabra o frase debe aparecer al principio de una propiedad administrada.

Proximidad

STRING

Define una condición de coincidencia de valor booleano en una cadena de texto.

Cadena

XRANK

Permite aumentar el rango dinámico de elementos en función de determinadas repeticiones del término sin cambiar los elementos que coinciden con la consulta. Una expresión XRANK contiene un componente que debe coincidir y uno o varios componentes que contribuyen solo al rango dinámico.

Este operador es similar al operador RANK, pero con distintas características de rendimiento y control de contribución de rango.

Relevancia

AND

Devuelve únicamente elementos que coinciden con todos los operandos AND. Los operandos pueden ser un solo término o cualquier subexpresión FQL válida.

Sintaxis

and(operand, operand [, operand]*)

Parámetros

No se aplica.

Ejemplos

Ejemplo 1. La siguiente expresión coincide con elementos para los que el índice de texto completo predeterminado contiene "cat", "dog" y "fox".

and(cat, dog, fox)

ANDNOT

Devuelve únicamente elementos que coinciden con el primer operando y que no coinciden con los operandos subsiguientes. Los operandos pueden ser un solo término o cualquier subexpresión FQL válida.

Sintaxis

andnot(operand, operand [,operand]*)

Parámetros

No se aplica.

Ejemplos

Ejemplo 1. La siguiente expresión coincide con elementos para los que el índice de texto completo predeterminado contiene "cat" pero no contiene "dog".

andnot(cat, dog)

Ejemplo 2. La siguiente expresión coincide con elementos para los que el índice de texto completo predeterminado contiene "dog" pero no contiene "beagle" ni "chihuahua".

andnot(dog, beagle, chihuahua)

ANY

Similar al operador OR, excepto que la clasificación dinámica (la puntuación de relevancia en el conjunto de resultados) no se ve afectada por el número de operandos que coinciden ni por la distancia entre los términos en el elemento. Los operandos pueden ser un solo término o cualquier subexpresión FQL válida.

El componente de clasificación dinámico para esta parte de la consulta se basa en el término que mejor coincida dentro de la expresión ANY.

Nota

La diferencia de OR se relaciona únicamente con la clasificación dentro del conjunto de resultados. El mismo conjunto total de elementos coincidirá con la consulta.

Sintaxis

any(operand, operand [,operand]*)

Parámetros

No se aplica.

Ejemplos

Ejemplo 1. La siguiente expresión coincide con elementos para los que el índice de texto completo predeterminado contiene "cat" o "dog".

Si el índice contiene tanto "cat" como "dog" pero "cat" se considera una mejor coincidencia, el rango dinámico del elemento se basará en "cat" sin tener en cuenta "dog".

any(cat, dog)

COUNT

Especifica el número de repeticiones del término de consulta que debe incluir un elemento para que se devuelva como resultado. El operando puede ser un término de consulta único, una frase o un término de consulta comodín.

Sintaxis

property-spec:count(operand [,from=<numeric value>, to=<numeric value>])

Parámetros

Parámetro

Valor

Descripción

from

<numeric_value>

El valor del parámetro from debe ser un entero positivo que especifica el número mínimo de veces que debe coincidir el operando especificado.

Si no se especifica el parámetro from, no existirá ningún límite inferior.

to

<numeric_value>

El valor del parámetro to debe ser un entero positivo que especifica el número máximo no inclusive de veces que el operando especificado debe coincidir. Por ejemplo, un valor to de 11 especifica 10 veces o menos.

Si no se especifica el parámetro to, no existirá ningún límite superior.

Ejemplos

Ejemplo 1. La siguiente expresión coincide con al menos de 5 repeticiones de la palabra "cat".

count(cat, from=5)

Ejemplo 2. La siguiente expresión coincide con al menos de 5 pero no 10 o más repeticiones de la palabra "cat".

count(cat, from=5, to=10)

DATETIME

Proporciona tipos explícitos de valores numéricos de fecha y hora. El operando es una cadena de fecha y hora con formato basado en la sintaxis especificada en Expresiones de consulta de fecha y hora.

La conversión de tipo explícita es opcional y generalmente no es necesaria. El tipo del término de consulta se detecta en función del tipo de la propiedad numérica de objetivo administrada.

Sintaxis

datetime(<date/time string>)

Parámetros

No se aplica.

ENDS-WITH

Especifica que una palabra o frase debe aparecer al final de una propiedad administrada (coincidencia de límite).

La coincidencia de límite no se admite en propiedades administradas numéricas. Las propiedades administradas numéricas siempre estarán sujetas a coincidencias de rango exactas o de valor.

Algunas aplicaciones pueden requerir que sea capaz de realizar una coincidencia exacta de una propiedad administrada. Por ejemplo, esto puede ser una propiedad product name administrada, donde el nombre completo de un producto es una subcadena del nombre de otro producto.

Sintaxis

ends-with(<term or phrase>)

Parámetros

No se aplica.

Ejemplos

Ejemplo 1. La siguiente expresión coincide con elementos con los valores "Sr. Adam Jones" y "Adam Jones" en la propiedad administrada "autor". No coincidirá con elementos con el valor "Adam Jones Sr.".

author:ends-with("adam jones")

Comentarios

La coincidencia de límite se puede aplicar a todo el texto de la propiedad administrada o a cadenas individuales dentro de una propiedad administrada que contenga una lista de valores de cadena, por ejemplo, una lista de nombres. En este caso, es posible que desee que coincida el contenido exacto de cada cadena y evitar coincidencia de consulta entre los límites de la cadena.

Para aplicar consultas de coincidencia de límite, debe configurar la propiedad administrada correspondiente en el esquema de índice.

Al habilitar la característica de coincidencia de límite para la propiedad administrada, puede hacer lo siguiente:

  • Usar consultas de coincidencia de límite explícito.

  • Impedir que las frases coincidan en los límites de cadena. En las propiedades administradas que contienen varias cadenas, esta característica garantiza que una cadena no coincide con palabras antes o después de una indicación de límite.

EQUALS

Especifica que una palabra o frase debe proporcionar una coincidencia de token exacta con la propiedad administrada.

Sintaxis

equals(<term or phrase>)

Parámetros

No se aplica.

Ejemplos

**Ejemplo 1.**El siguiente ejemplo coincidirá con elementos con los valores "Adam Jones" en la propiedad administrada "autor". No coincidirá con elementos con los valores "Adam Jones Sr." o "Sr. Adam Jones".

author:equals("adam jones")

Comentarios

Vea también ENDS-WITH.

FILTER

Se usa para realizar consultas en metadatos u otros datos estructurados.

El uso del operador FILTER implica automáticamente la siguiente información para la consulta especificada:

  • La lingüística se establecerá en linguistics="OFF".

  • Se deshabilitará la clasificación.

  • No se usará el resaltado de la consulta en el resumen de resultados resaltados para los resultados de la consulta.

SugerenciaSugerencia

Si usa el operador STRING dentro de una expresión FILTER, de manera predeterminada, se deshabilita la lingüística. Puede habilitar el procesamiento lingüístico dentro de cada expresión STRING dentro de FILTER con el operando linguistics="ON".

Sintaxis

filter(<any valid FQL operator expression>)

Parámetros

No se aplica.

Ejemplos

Ejemplo 1. La siguiente expresión coincide con los elementos que tienen una propiedad administrada title que contiene "sonata" y una propiedad administrada doctype que contiene el token "audio". No se realizarán coincidencias lingüísticas sobre "audio". Debido a que se usará el token FILTER para que coincida con "audio", dicho texto no se resaltará en el resumen con resaltado de referencias.

and(title:sonata, filter(doctype:equals("audio")))

Comentarios

Si se debe restringir la consulta para que coincida con al menos un conjunto grande de valores de enteros en una propiedad numérica, esto se puede expresar de dos maneras de funcionalidad equivalentes:

  • and(string("hello world"), filter(property-spec:or(1, 20, 453, ... , 3473)))

  • and(string("hello world"), filter(property-spec:int("1 20 453 ... 3473", mode="or")))

En el segundo ejemplo se usa el operador INT a través de una cadena con el conjunto de valores numéricos entre comillas dobles. Esto proporciona un rendimiento significativamente mejor de las consultas al filtrar un conjunto grande de valores numéricos.

Si se debe filtrar un conjunto grande de valores, debe considerar el uso de valores numéricos en lugar de valores de cadena y expresar las consultas a través de la sintaxis optimizada.

FLOAT

Proporciona tipos explícitos de valores numéricos de punto flotante. El operando es un valor de punto flotante de acuerdo con la sintaxis especificada en Expresiones de términos numéricos.

La conversión de tipo explícita es opcional y generalmente no es necesaria. El tipo del término de consulta se detecta en función del tipo de la propiedad numérica de objetivo administrada.

Sintaxis

float(<floating point value>)

Parámetros

No se aplica.

INT

Proporciona tipos explícitos de valores enteros. El operando es un valor entero de acuerdo con la sintaxis especificada en Expresiones de términos numéricos.

La conversión de tipo explícita es opcional y generalmente no es necesaria. El tipo del término de consulta se detecta en función del tipo de la propiedad numérica de objetivo administrada.

El operador INT también se puede usar para expresar un conjunto de valores enteros como argumentos para los operadores booleanos de FQL. Esto proporciona una manera eficaz de rendimiento para proporcionar un conjunto de valores en una consulta, ya que los valores que se pasan mediante el operador INT no se analizan el analizador de consultas FQL, sino que se pasan directamente al componente de coincidencia de consultas.

Sintaxis

int(<integer value>)

int("value, value, … , value")

La primera sintaxis especifica un número entero. La segunda sintaxis especifica una lista separada por comas de los valores enteros entre comillas dobles.

Parámetros

No se aplica.

Ejemplos

Ejemplo 1. Si tiene que restringir la consulta para que coincida con al menos un conjunto grande de valores de enteros en una propiedad numérica, puede expresar esto mediante el operador INT:

and(string("hello world"), filter(id:int("1 20 49 124 453 985 3473", mode="or")))

NEAR

Restringe el conjunto de resultados a aquellos elementos que tienen N términos dentro de una determinada distancia entre sí.

El orden de los términos de consulta no es importante para la coincidencia, únicamente la distancia lo es.

Cualquier número de términos se puede combinar con los operadores NEAR.

Los operandos NEAR pueden ser términos únicos, frases o expresiones de operador OR o ANY de tipo booleano. Se aceptan caracteres comodín.

Si varios operandos del operador NEAR coinciden con el mismo token indizado, se consideran próximos entre sí.

Sintaxis

near(arg, arg [, arg]* [, N=<numeric value>])

Parámetros

Parámetro

Valor

Descripción

N

<numeric_value>

Especifica el número máximo de palabras que se permite que aparezcan entre los términos (proximidad explícita).

Si NEAR incluye más de dos operandos, se cuenta el número máximo de palabras permitidas entre los términos (N) en la expresión completa.

Valor predeterminado: 4

Ejemplos

Ejemplo 1. La siguiente expresión coincide con las cadenas que contienen "cat" y "dog" si no las separan más de cuatro tokens indizados (predeterminado).

near(cat, dog)

Ejemplo 2. La siguiente expresión coincide con las cadenas que contienen "cat", "dog, "fox" y "wolf" si no las separan más de cuatro tokens indizados.

near(cat, dog, fox, wolf)

La tabla siguiente contiene ejemplos de valores de cadena de la propiedad administrada e indica si coinciden con la expresión anterior del ejemplo 2.

¿Hay coincidencia?

Texto

"The picture shows a cat, a dog, a fox, and a wolf." (La imagen muestra un gato, un perro, un zorro y un lobo.)

Sí (con lematización)

"Dogs, foxes, and wolves are canines, but cats are felines." (Los perros, los zorros y los lobos son caninos, pero los gatos son felinos.)

No

"The picture shows a cat with a dog, a fox, and a wolf." (La imagen muestra un gato con un perro, un zorro y un lobo.)

La siguiente expresión coincide con todas las cadenas de la tabla anterior.

near(cat, dog, fox, wolf, N=5)

**Ejemplo 3.**La siguiente expresión coincide con una propiedad administrada que contiene únicamente el token indizado "clarinet" porque ambos "c*t" y "clarinet" coinciden y se consideran próximos entre sí, aunque ambos tokens de búsqueda coinciden el mismo token indizado.

near("c*t", "clarinet")

Comentarios

Consideraciones de distancia de términos NEAR/ONEAR

N indica el número máximo de palabras que pueden aparecer entre los términos de consulta en el segmento con coincidencia del elemento. Si NEAR u ONEAR incluyen más de dos operandos, se cuenta el número máximo de palabras permitidas entre los términos de consulta (N) en el segmento del elemento que coincida con todos los términos ONEAR o NEAR.

NEAR u ONEAR operan en texto con tokens. Esto significa que los caracteres especiales, como la coma (","), el punto ("."), los dos puntos (":") o el punto y coma (";") se tratarán como espacios en blanco. El término "distancia" se refiere a los tokens en el texto indizado.

Si usa ONEAR o NEAR con operandos iguales, el operador funcionará de la siguiente manera:

near(a, a, n=x)

Esta consulta devolverá siempre true si al menos una instancia de "a'' aparece dentro del contexto. Esto también significa que NEAR no se puede usar como operador COUNT. Para obtener más información sobre cómo contar las repeticiones de términos, vea el operador COUNT.

NEAR aplicado a frases también hará coincidir frases superpuestas en el texto.

Si un token en el segmento coincidente coincide con más de un operando en la expresión ONEAR o NEAR, la consulta puede coincidir incluso si el número de tokens no coincidentes en el segmento coincidente supera el valor de 'N' en la expresión del operador NEAR u ONEAR. Por ejemplo, una superposición puede ser una superposición de frases. Si el número de superposición de token es "O", la consulta coincidirá si aparecen no más de 'N+O ' tokens sin coincidencia en el segmento coincidente del elemento.

NEAR u ONEAR** con NOT**

El operador NOT no se puede usar dentro del operador NEAR u ONEAR. A continuación se ofrece una sintaxis FQL incorrecta:

near(audi,not(bmw),n=2)

NOT

Devuelve solo los elementos que no coinciden con el operando. El operando puede ser cualquier expresión FQL válida.

Sintaxis

not(operand)

Parámetros

No se aplica.

ONEAR

La variante ordenada de NEAR y requiere una coincidencia ordenada de los términos. El operador ONEAR puede usarse para restringir el conjunto de resultados a los elementos que tienen N términos dentro de una determinada distancia entre sí.

Sintaxis

onear(arg, arg [, arg]* [, N=<numeric value>])

Parámetros

Parámetro

Valor

Descripción

N

<numeric_value>

Especifica el número máximo de palabras que se permite que aparezcan entre los términos (proximidad explícita).

Si ONEAR incluye más de dos operandos, se cuenta el número máximo de palabras permitidas entre los términos (N) en la expresión completa.

Valor predeterminado: 4

Ejemplos

Ejemplo 1. La siguiente expresión coincide con todas las repeticiones de las palabras "cat", "dog", "fox" y "wolf" que aparece en orden, si no las separan más de cuatro tokens indizados.

onear(cat, dog, fox, wolf)

La tabla siguiente contiene ejemplos de valores de cadena de la propiedad administrada e indica si coinciden con la expresión anterior.

¿Hay coincidencia?

Texto

"The picture shows a cat, a dog, a fox, and a wolf." (La imagen muestra un gato, un perro, un zorro y un lobo.)

No

"Dogs, foxes, and wolves are canines, but cats are felines." (Los perros, los zorros y los lobos son caninos, pero los gatos son felinos.)

No

"The picture shows a cat with a dog, a fox, and a wolf." (La imagen muestra un gato con un perro, un zorro y un lobo.)

Ejemplo 2. La siguiente expresión coincide (con lematización) con el texto de la segunda fila de la tabla anterior.

onear(dog, fox, wolf, cat, N=5)

Ejemplo 3. La siguiente expresión coincide con el texto de la primera y tercera fila de la tabla anterior.

onear(cat, dog, fox, wolf, N=5)

Comentarios

Vea también NEAR.

OR

Devuelve solo los elementos que coinciden al menos con uno de los operandos OR. Los elementos que coincidan obtendrán una clasificación dinámica (puntuación de relevancia en el conjunto de resultados) más alta si coinciden más de los operandos OR. Los operandos pueden ser un solo término o cualquier subexpresión FQL válida.

Sintaxis

or(operand, operand [,operand]*)

Parámetros

No se aplica.

Ejemplos

Ejemplo 1. La siguiente expresión coincide con todos los elementos para los que el índice de texto completo predeterminado contiene "cat" o "dog". Si el índice de texto completo predeterminado de un elemento contiene "cat" y "dog", coincidirá y tendrá un mayor rango dinámico que el que tendría si contuviera sólo uno de los tokens.

or(cat, dog)

PHRASE

Busca una cadena exacta de tokens.

Los operandos PHRASE pueden ser términos únicos. Se aceptan caracteres comodín.

Sintaxis

phrase(term [, term]*)

Parámetros

No se aplica.

Comentarios

Vea también STRING.

RANGE

Use el operador RANGE para las propiedades administradas numéricas y de fecha y hora. El operador permite expresiones con coincidencia de rango.

Sintaxis

range(start, end [,from="GE"|"GT"] [,to="LE"|"LT"])

Parámetros

Parámetro

Valor

Descripción

start

<numeric_value>|<date/time_value>

Valor de inicio del rango.

Para especificar que el rango no tiene ningún límite inferior, use la palabra reservada min.

stop

<numeric_value>|<date/time_value>

Valor final del rango.

Para especificar que el rango no tiene ningún límite superior, use la palabra reservada max.

from

GE|GT

Parámetro opcional que indica el intervalo de inicio de apertura o cierre.

Valores válidos:

  • GE  Mayor o igual que el valor de inicio (>= inicio del intervalo).

  • GT  Mayor que el valor de inicio (> inicio del intervalo).

Valor predeterminado: GE

to

LE|LT

Parámetro opcional que indica el intervalo final de apertura o cierre.

Valores válidos:

  • LE  Menor o igual al valor final (<= fin del intervalo).

  • LT  Menos que el valor final (< final del intervalo).

Valor predeterminado: LT

Ejemplos

Ejemplo 1. La siguiente expresión coincide con una propiedad de descripción que empieza con la frase "olympic games" (juegos olímpicos) que aparece en elementos con un tamaño de al menos 10.000 bytes.

and(size:range(10000, max), description:starts-with("olympic games"))

RANK

Permite aumentar el rango dinámico de elementos en función de determinadas repeticiones del término sin cambiar los elementos que coinciden con la consulta. Una expresión RANK contiene un componente que debe coincidir y uno o varios componentes que contribuyen solo al rango dinámico.

Las diferencias entre el operador RANK y el operador XRANK son las siguientes:

  • XRANK es mucho más eficaz que RANK cuando los términos de los operandos RANK generan muchos resultados.

  • En XRANK, el nivel de aumento se puede establecer a través del parámetro de aumento, en el momento de la consulta.

  • XRANK agrega un valor de clasificación constante, mientras que RANK agrega un valor de clasificación asociado con los operandos.

  • XRANK agregará una clasificación a los elementos que no han recibido ninguna clasificación dinámica.

  • Los operandos XRANK también pueden tratar propiedades administradas (no solo índices de texto completo).

El operador RANK tiene dos o más operandos. El primer operando es la expresión de consulta principal cuya coincidencia se busca. Contribuye a la recuperación o precisión como cualquier otro término o expresión. Los operandos siguientes contribuyen a aumentar el rango dinámico, pero no afectan a los elementos que coinciden con la consulta. Los operandos pueden ser términos únicos o cualquier subexpresión FQL válida.

El operador RANK puede usarse únicamente en índices de texto completo.

Sintaxis

rank(operand, rank-operand [, rank-operand]*)

Parámetros

No se aplica.

Ejemplos

Ejemplo 1. La siguiente expresión coincide con los elementos para los que el índice contiene "dog". La expresión aumentará el rango dinámico de un elemento si el índice también contiene "cat". Si el índice contiene "cat" pero no "dog", el elemento no coincidirá con la expresión.

rank(dog, cat)

Ejemplo 2. La siguiente expresión coincide con los elementos para los que el índice contiene "dog". La expresión aumentará el rango dinámico de un elemento si el índice contiene también "boxer" o "pointer".

rank(dog, boxer, pointer)

Ejemplo 3. La siguiente expresión coincide con los mismos elementos que la expresión anterior, pero aumentará el rango dinámico de un elemento si el índice también contiene la frase "thoroughbred beagle".

rank(dog, "thoroughbred beagle")

Ejemplo 4. La siguiente expresión coincide con los elementos para los que la propiedad administrada title contiene "dog" y "beagle". La expresión aumenta el rango dinámico de los elementos para los que la propiedad administrada title también contiene el token indizado "thoroughbred".

and(title:dog, rank(title:beagle, title:thoroughbred))

STARTS-WITH

Especifica una palabra o frase que debe aparecer al principio de una propiedad administrada.

Sintaxis

starts-with(<term or phrase>)

Parámetros

No se aplica.

Ejemplos

Ejemplo 1. La siguiente expresión coincidirá con elementos con los valores "Adam Jones Sr." y "Adam Jones" en la propiedad administrada author. No coincidirá con elementos con el valor "Sr. Adam Jones".

author:starts-with("adam jones")

Comentarios

Para obtener notas adicionales sobre la coincidencia de límite, vea ENDS-WITH.

STRING

Define una condición de coincidencia de valor booleano en una cadena de texto.

El operando es una cadena de texto (uno o varios términos) que va a combinarse. La cadena viene seguida de cero o más parámetros.

El operador STRING también se puede usar como una conversión de tipo. Por ejemplo, la consulta string("24.5") tratará el valor numérico "24.5" como una cadena de texto.

Sintaxis

string("<text string>"

      [, mode=<mode>]

      [, n=<near>]

      [, weight=<n>]

      [, linguistics=<on|off>]

      [, wildcard=<on|off>]

      [, minexpansion=<n>]

      [, maxexpansion=<n>]

      [, annotation_class=<annotation_string>])

Parámetros

Parámetro

Valor

Descripción

mode

<mode>

El parámetro mode especifica cómo se evalúa el valor <text string>. La siguiente tabla muestra valores válidos.

Modo

Expresión de operador equivalente

"PHRASE"

phrase(term [,term]*)

"AND"

and(term, term [,term]*)

"OR"

or(term, term [,term]*)

"ANY"

any(term, term [,term]*)

"NEAR"

near(term, term [,term]*, N)

"ONEAR"

onear(term, term [,term]*, N)

"SIMPLEALL"

La cadena recibe el formato en función de la sintaxis "ALL" de lenguaje de consulta simple. Para obtener más información, vea Lenguaje de consulta simple FQL.

"SIMPLEANY"

La cadena recibe el formato en función de la sintaxis "ANY" de lenguaje de consulta simple. Para obtener más información, vea Lenguaje de consulta simple FQL.

Valor predeterminado: "PHRASE"

n

<numeric_value>

Este parámetro indica la distancia de términos máxima de mode="NEAR" o mode="ONEAR".

Las siguientes expresiones son equivalentes:

string("hello world", mode="NEAR", n=5)

near(hello, world, n=5)

Valor predeterminado: 4

weight

<numeric_value>

Este parámetro es un valor numérico positivo que indica el peso del término de clasificación dinámico.

Un valor bajo indica que un término debe contribuir menos a la clasificación. Un valor alto indica que un término debe contribuir más a la clasificación. Un valor de cero para el parámetro de peso especifica que un término no debe afectar al rango dinámico.

El parámetro weight se aplica a todos los términos de la expresión STRING.

SugerenciaSugerencia

El parámetro de peso afectará únicamente a las consultas de índice de texto completo.

Valor predeterminado: 100

linguistics

on|off

Habilita o deshabilita todas las características lingüísticas de la cadena (lematización, sinónimos, comprobación de ortografía) si están habilitados para la consulta.

Puede usar este parámetro para desactivar el procesamiento lingüístico para un determinado término o cadena mientras el término o cadena sigue contribuyendo a la clasificación.

Valor predeterminado: "ON"

wildcard

on|off

Este parámetro controla la expansión de comodines de términos dentro de <text string>. Esta configuración invalida la configuración de caracteres comodín en los parámetros de consulta y permite que se habiliten o deshabiliten caracteres comodín en partes específicas de la consulta.

Los siguientes son valores válidos:

  • "ON"  Especifica que los caracteres ?" y "*" se evalúan como caracteres comodín. Un carácter "?" coincide con cualquier carácter individual y un carácter "*" coincide con cero o más caracteres.

  • "OFF"  Especifica que los caracteres "?" y "*" no se evalúan como caracteres comodín.

Valor predeterminado: "ON"

minexpansion

<entero_positivo>

Este parámetro define la longitud mínima de una subcadena en la expansión de comodines.

El valor de <cadena> debe ser una expresión comodín con un solo asterisco.

Valor predeterminado: 0

maxexpansion

<entero_positivo>

Este parámetro define la longitud máxima de una subcadena en la expansión de comodines.

El valor de <cadena> debe ser una expresión comodín con un solo asterisco.

Valor predeterminado: infinity

annotation_class

<cadena de anotación>

El parámetro STRINGannotation_class="user" se usa para realizar anotaciones en un nodo STRING para indicar que este nodo lo genera el usuario.

Algunas características de relevancia se aplican solo a la parte de la consulta que genera el usuario. Esto incluye el incremento de la consulta en función del delimitador de texto y los registros de consulta click-through.

Ejemplos

Ejemplo 1. Dado que el modo de cadena de predeterminado es "PHRASE", cada una de las siguientes expresiones devuelve los mismos resultados.

"what light through yonder window breaks"
string("what light through yonder window breaks")
string("what light through yonder window breaks", mode="phrase")
phrase(what, light, through, yonder, window, breaks)

Ejemplo 2. La siguiente expresión de token de cadena y la expresión de operador AND devuelven los mismos resultados.

string("cat dog fox", mode="and")
and(cat, dog, fox)

Ejemplo 3. La siguiente expresión de token de cadena y la expresión de operador OR devuelven los mismos resultados.

string("coyote saguaro", mode="or")
or(coyote, saguaro)

Ejemplo 4. La siguiente expresión de token de cadena y la expresión de operador ANY devuelven los mismos resultados.

string("coyote saguaro", mode="any")
any(coyote, saguaro)

Ejemplo 5. La siguiente expresión de token de cadena y la expresión de operador NEAR devuelven los mismos resultados.

string("coyote saguaro", mode="near")
near(coyote, saguaro)

Ejemplo 6. La siguiente expresión de token de cadena y la expresión de operador NEAR devuelven los mismos resultados.

string("cat dog fox wolf", mode="near", N=4)
near(cat, dog, fox, wolf, N=4)

Ejemplo 7. La siguiente expresión de token de cadena y la expresión de operador ONEAR devuelven los mismos resultados.

string("cat dog fox wolf", mode="onear")
onear(cat, dog, fox, wolf)

Ejemplo 8. Debido a que los caracteres de signo de interrogación ("?") y asterisco ("*") se evalúan como caracteres comodín, las siguientes expresiones de token de cadena coinciden con "cat", "goto" y cualquier otro token indizado de tres letras que empiece con "g" y termine con "o".

string("c?t")
string("c*t")

Ejemplo 9. La siguiente expresión de token de cadena coincide con la palabra "nobler" con las características lingüísticas deshabilitadas, por lo que otras formas de la palabra (por ejemplo, "ennobling") no coinciden mediante el uso de lematización.

string("nobler", linguistics="off")

Ejemplo 10. La siguiente expresión coincide con los elementos que contengan "cat" o "dog", pero la expresión aumenta el rango dinámico de los elementos que contienen "dog" más que de los elementos que contienen "cat".

or(string("cat", weight="200"), string("dog", weight="500"))

Ejemplo 11. La siguiente expresión coincide con todos los términos que comienzan con "prefijo" y terminen con "sufijo", donde la subcadena entre "prefijo" y "sufijo" tiene una longitud máxima de 4 caracteres.

string("prefix*suffix",maxexpansion=4)

Ejemplo 12. La siguiente expresión de token de cadena coincide con las palabras "microsoft corporation". La adición del parámetro annotation_class garantiza que los elementos con exactamente el mismo delimitador de texto en un vínculo que señala al elemento aumentarán más el rango.

string("Microsoft corporation", annotation_class="user")

Comentarios

Peso de la relevancia para la clasificación dinámica

El principal efecto del parámetro weight es en las consultas OR. También puede tener algún efecto en las consultas AND. El algoritmo de rango dinámico puede implicar que diferentes términos proporcionen una contribución de rango diferente en función del lugar del elemento donde se produce la coincidencia.

La diferencia en la contribución de rango también puede basarse en la frecuencia del término y en la frecuencia del elemento invertido. A continuación se muestra un ejemplo:

  • Consulta: and(string("a"), string("b", weight=200))

  • Esquema de índice: la propiedad administrada title tiene más peso que la propiedad administrada body.

  • El elemento de índice 1 incluye el término 'a' en el título y el término' b' en el cuerpo.

  • El elemento de índice 2 incluye el término 'a' en el cuerpo y el término' b' en el título.

En este ejemplo, el elemento 2 obtendrá el rango total más alto, debido a que los elementos con una mayor contribución de rango dinámico aumentarán aún más.

SugerenciaSugerencia

El aumento del término relativo (positivo o negativo) se aplica al componente de rango dinámico del rango total. Sin embargo, los cálculos de rango de aumento de proximidad (la distancia entre las palabras) no se ven afectados por el peso de los términos. El peso relativo no siempre implica que el rango total del elemento se modifica de acuerdo con el porcentaje dado.

La siguiente consulta buscará los términos "peter", "paul" o "mary", donde "peter" tendrá el doble de contribución de rango que los otros dos términos.

or(peter, string("paul mary", mode="OR", weight=50))

Tratamiento de cadenas con caracteres especiales

Los caracteres especiales, como la coma (","), el punto y coma (";"), los dos puntos (":"), el punto ("."), el signo menos ("-"), el subrayado ("_") o la barra diagonal ("/"), se tratan como espacios en blanco dentro de una expresión de cadena entre comillas dobles. Esto está relacionado con el proceso de tokenización. Estos caracteres también implican una redacción implícita de los tokens separados por estos caracteres.

Las siguientes expresiones de consulta son equivalentes.

title:string("animals birds", mode="phrase")
title:"animals/birds"
title:string("animals/birds", mode="and")
title:string("animals/birds", mode="or")

Las siguientes expresiones de consulta son equivalentes.

title:or(string("animals birds", mode="phrase"),
         string("animals insects", mode="phrase"))
title:string("animals/birds animals/insects", mode="or")

Las siguientes expresiones de consulta son equivalentes.

body:string("help contoso com", mode="phrase")
body:string("help@contoso.com")

Coincidencia de frases con tokens

Puede buscar una cadena exacta de tokens a través del operador STRING con mode="phrase" o el operador PHRASE.

Todas estas operaciones de frase implican a una coincidencia de frase con tokens. Esto significa que los caracteres especiales, como la coma (","), el punto y coma (";"), los dos puntos (" :"), el subrayado ("_"), el signo menos ("-") o la barra diagonal ("/") se tratan como espacios en blanco. Esto está relacionado con el proceso de tokenización.

XRANK

Permite aumentar el rango dinámico de elementos en función de determinadas repeticiones del término sin cambiar los elementos que coinciden con la consulta. Una expresión XRANK contiene un componente que debe coincidir y uno o varios componentes que contribuyen solo al rango dinámico.

Las diferencias entre el operador RANK y el operador XRANK son las siguientes:

  • XRANK es mucho más eficaz que RANK cuando los términos del operando RANK generan muchos resultados.

  • En XRANK, el nivel de aumento se puede establecer a través del parámetro de aumento, en el momento de la consulta.

  • XRANK agrega un valor de clasificación constante, mientras que RANK agrega un valor de clasificación asociado con los operandos.

  • XRANK agregará una clasificación a los elementos que no han recibido ninguna clasificación dinámica.

  • Los operandos XRANK también pueden tratar propiedades administradas (no solo índices de texto completo).

El operador XRANK tiene dos o más operandos. Los operandos pueden ser términos únicos o cualquier subexpresión FQL válida.

El primer operando es la expresión de consulta principal cuya coincidencia se busca. Contribuye a la recuperación o precisión como cualquier otro término o expresión.

Los operandos subsiguientes no afectan al número total de elementos que coinciden, pero afectan a la clasificación dinámica en el sentido de que los elementos que coinciden con términos dentro de los siguientes operandos obtendrán una clasificación mejor en el conjunto de resultados. Si tiene más de un operando subsiguiente, la coincidencia de cada operando agregará un valor de aumento de n al rango total del elemento,

Este operador se puede usar para aumentar el rango dinámico de acuerdo con determinados términos de texto encontrados, pero donde estos términos no deban ser encontrados para generar una coincidencia.

El operador XRANK se puede usar en índices de texto completo y en propiedades administradas.

XRANK es compatible con el aumento unario. xrank(a,boost=n) agregará un valor de aumento de nivel de n a cada elemento que coincida con a. Se puede usar esta sintaxis al combinar varias expresiones XRANK mediante un operador AND o ANY.

Sintaxis

xrank(operand, rank-operand [, rank-operand]* [,boost=n] [,boostall=yes])

Parámetros

Parámetro

Valor

Descripción

boost

<numeric_value>

Especifica que el rango dinámico de los elementos que coincidan aumentará según el número especificado.

El componente de rango dinámico no será menor que cero (no se admite el rango de resultados negativos). Es posible que aún obtenga un rango de resultados positivos debido al componente de rango estático.

Valor predeterminado: 100

boostall

yes|no

Especifica si el aumento en el rango dinámico se aplicará a los elementos que aún no tienen un rango dinámico.

  • yes  Especifica que el aumento en el rango dinámico se aplicará a todos los elementos que coincidan, incluso si aún no tienen valores de rango dinámico.

  • no  Especifica que el aumento en el rango dinámico sólo se aplicará a los elementos que coincidan que ya tengan valores de rango dinámico.

Valor predeterminado: no

Ejemplos

Ejemplo 1. La siguiente expresión coincide con los elementos para los que el índice de texto completo predeterminado contiene "cat" o "dog". La expresión aumenta el rango dinámico de los elementos que también contengan "thoroughbred".

xrank(or(cat, dog), thoroughbred)

**Ejemplo 2.**La siguiente expresión coincide con los elementos para los que el índice de texto completo predeterminado contiene "cat" o "dog". La expresión aumenta el rango dinámico de los elementos que contienen "thoroughbred" en 500 en lugar del valor predeterminado de 100, incluso para los elementos que previamente no tenían ningún rango.

xrank(or(cat, dog), thoroughbred, boost=500, boostall=yes)

Vea también

Conceptos

Introducción a la integración de consultas de FAST Search

Referencia de sintaxis del lenguaje de consulta FAST (FQL)

Especificación de la propiedad FQL

Expresiones de token de FQL

Lenguaje de consulta simple FQL

Referencia de sintaxis FQL (ABNF)