Cláusula RANK BY
Los resultados de una consulta incluyen las filas devueltas por la consulta y un valor de clasificación para cada fila si la columna rank se incluye en la cláusula SELECT. El motor de búsqueda calcula los valores de clasificación y se devuelven como enteros en el intervalo cero a 1000. Para que los resultados de clasificación sean más significativos, la consulta puede controlar cómo se calculan los valores de clasificación sin procesar en la cláusula RANK BY.
Este tema se organiza de la siguiente manera:
Cláusula RANK BY
La sintaxis de la cláusula RANK BY es la siguiente:
WHERE ( <search_condition> )
RANK BY [ ( ] <rank_specification> [ ) ]
La cláusula RANK BY se aplica al search_condition inmediatamente anterior, especificando eficazmente una clasificación inferior o superior para las filas devueltas por esa condición de búsqueda que las filas devueltas por otra condición de búsqueda. Se requieren paréntesis que rodean el search_condition. Los paréntesis que rodean la especificación de clasificación son opcionales.
Se puede aplicar más de una cláusula RANK BY a una sola condición. Puede incluir cláusulas RANK BY adicionales una después del otro mediante paréntesis.
Nota
Los predicados de texto completo devuelven valores de clasificación en el intervalo de 0 a 1000. Los valores de clasificación de todos los documentos coincidentes con un predicado de texto no completo son 1000. Las modificaciones en los valores de clasificación deben tener en cuenta esta información.
La parte rank_specification de la cláusula RANKBY identifica una o varias funciones que se van a aplicar a los valores de clasificación. La función WEIGHT aplica un multiplicador al valor de clasificación sin procesar de una fila devuelta. Cuanto menor sea el multiplicador, menor será el valor de clasificación resultante. La función COERCION se puede usar para multiplicar, agregar o establecer un valor de clasificación específico para una fila devuelta. Cada especificación de clasificación puede incluir cero o una función WEIGHT y cero o más funciones COERCION. Si las funciones WEIGHT y COERCION se incluyen en una cláusula RANK BY, la función WEIGHT debe ser primero.
Weight (función)
La sintaxis de la función WEIGHT es:
WEIGHT ( <weight_multipler> )
El multiplicador debe ser un decimal comprendido entre 0,001 y 1,000. El valor de clasificación sin formato devuelto por el predicado de condición de búsqueda se multiplica por el multiplicador de peso para establecer un nuevo valor de clasificación.
En el ejemplo siguiente, la función WEIGHT proporciona documentos con la palabra "Theresa" en el campo System.Document.LastAuthor la mitad del valor de clasificación de los documentos con "Theresa" en el campo System.Author:
WHERE CONTAINS ( System.Author,'"Theresa"' )
RANK BY WEIGHT ( 1.000 )
OR
CONTAINS ( System.Document.LastAuthor,'"Theresa"' )
RANK BY WEIGHT ( 0.500 )
Nota
Las características de ponderación de columnas de predicado CONTAINS y FREETEXT admiten un formato abreviado mediante dos puntos entre el término de búsqueda y el multiplicador ("software":0.25). La cláusula RANK BY no admite el formulario abreviado.
Existe una limitación al usar RANK BY WEIGHT: no funciona con cláusulas CONTAINS que usan condiciones booleanas; por ejemplo, no se permite el ejemplo siguiente:
CONTAINS ( System.Author,'"Theresa" OR "Teresa"' ) RANK BY WEIGHT ( 0.400 )
Coercion (función)
La función de coerción de clasificación se puede usar para cambiar el valor de clasificación devuelto por suma o multiplicación o por asignarle un valor específico.
La sintaxis de la función COERCION es:
COERCION ( <coercion_operation> , <coercion_value> )
El valor de coerción es un valor entero.
En la tabla siguiente se describe la configuración de la operación de coerción disponible.
Operación de coerción | Descripción | Intervalo de valores |
---|---|---|
ABSOLUTE | El valor de clasificación devuelto es el valor especificado en el valor de coerción. | De 0 a 1000 |
ADD | El valor de clasificación devuelto es la suma del valor de clasificación sin procesar y el valor de coerción especificado. | De 0,001 a 1,0 |
MULTIPLY | El valor de clasificación devuelto es el producto del valor de clasificación sin procesar y el valor de coerción especificado. | De 0,001 a 1,0 |
Importante
La búsqueda solo puede devolver valores de clasificación en el intervalo de 0 a 1000.
En el ejemplo siguiente se usa la función COERCION para establecer todos los documentos con "computer" en el título para que tengan una clasificación de 1000, a la vez que se reduce en un cuarto la clasificación de documentos que contienen "equipo" y "software" en el título.
WHERE CONTAINS ( System.Title, 'computer' )
RANK BY COERCION ( ABSOLUTE , 1000 )
OR
CONTAINS ( System.Title, '"computer" AND "software"' )
RANK BY COERCION ( MULTIPLY, 0.750 )