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. |
|
Booleano |
Permite combinar términos y subexpresiones en una consulta. |
|
Proximidad |
Permite especificar la proximidad de los términos de consulta en una secuencia de coincidencia de texto. |
|
Numérico |
Permite especificar condiciones numéricas en la consulta. |
|
Relevancia |
Permite influir en la evaluación de relevancia de una consulta. |
En la siguiente tabla se proporciona una lista de los operadores compatibles.
Operador |
Descripción |
Tipo |
---|---|---|
Devuelve únicamente elementos que coinciden con todos los operandos AND. |
Booleano |
|
Devuelve únicamente elementos que coinciden con el primer operando y que no coinciden con los operandos subsiguientes. |
Booleano |
|
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 |
|
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 |
|
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 |
|
Especifica que una palabra o frase debe aparecer al final de una propiedad administrada. |
Proximidad |
|
Especifica que una palabra o frase debe proporcionar una coincidencia de token exacta con la propiedad administrada. |
Proximidad |
|
Se usa para realizar consultas en metadatos u otros datos estructurados. |
Relevancia |
|
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 |
|
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 |
|
Restringe el conjunto de resultados a aquellos elementos que tienen N términos dentro de una determinada distancia entre sí. |
Proximidad |
|
Devuelve solo los elementos que no coinciden con el operando. El operando puede ser cualquier expresión FQL válida. |
Booleano |
|
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 |
|
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 |
|
Devuelve sólo los elementos que coinciden con una cadena exacta de tokens. |
Proximidad |
|
Permite expresiones con coincidencia de rango. El operador RANGE se usa para propiedades administradas numéricas y de fecha y hora. |
Numérico |
|
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 |
|
Especifica que una palabra o frase debe aparecer al principio de una propiedad administrada. |
Proximidad |
|
Define una condición de coincidencia de valor booleano en una cadena de texto. |
Cadena |
|
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.
![]() |
---|
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 |
---|---|
Sí |
"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 |
---|---|
Sí |
"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:
Valor predeterminado: GE |
to |
LE|LT |
Parámetro opcional que indica el intervalo final de apertura o cierre. Valores válidos:
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.
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.
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:
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.
![]() |
---|
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.
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