Partager via


RANK BY Clause

Les résultats d’une requête incluent à la fois les lignes retournées par la requête et une valeur de classement pour chaque ligne si la colonne rank est incluse dans la clause SELECT. Les valeurs de classement sont calculées par le moteur de recherche et sont retournées sous forme d’entiers dans la plage de zéro à 1000. Pour rendre les résultats de classement plus significatifs, la requête peut contrôler la façon dont les valeurs de classement brutes sont calculées dans la clause RANK BY.

Cette rubrique est organisée comme suit :

RANK BY Clause

La syntaxe de la clause RANK BY est la suivante :

WHERE ( <search_condition> ) 
RANK BY [ ( ] <rank_specification> [ ) ]

La clause RANK BY est appliquée au search_condition immédiatement qui la précède, spécifiant en fait un rang inférieur ou supérieur pour les lignes retournées par cette condition de recherche par rapport aux lignes retournées par une autre condition de recherche. Les parenthèses entourant le search_condition sont obligatoires. Les parenthèses entourant la spécification de rang sont facultatives.

Plusieurs clauses RANK BY peuvent être appliquées à une seule condition. Vous pouvez inclure des clauses RANK BY supplémentaires l’une après l’autre à l’aide de parenthèses.

Notes

Les prédicats de texte intégral retournent des valeurs de classement comprises entre 0 et 1 000. Les valeurs de classement pour tous les documents correspondant à un prédicat de texte non intégral sont 1000. Les modifications apportées aux valeurs de classement doivent prendre en compte ces informations.

 

La partie rank_specification de la clause RANKBY identifie une ou plusieurs fonctions à appliquer aux valeurs de classement. La fonction WEIGHT applique un multiplicateur à la valeur de classement brut d’une ligne retournée. Plus le multiplicateur est petit, plus la valeur de classement résultante est faible. La fonction COERCION peut être utilisée pour multiplier, ajouter ou définir une valeur de classement spécifique pour une ligne retournée. Chaque spécification de classement peut inclure zéro ou une fonction WEIGHT et zéro ou plusieurs fonctions COERCITION. Si les fonctions WEIGHT et COERCION sont incluses dans une clause RANK BY, la fonction WEIGHT doit être la première.

Fonction WEIGHT

La syntaxe de la fonction WEIGHT est la suivante :

WEIGHT ( <weight_multipler> ) 

Le multiplicateur doit être une décimale comprise entre 0,001 et 1,000. La valeur de classement brut retournée par le prédicat de condition de recherche est multipliée par le multiplicateur de pondération pour définir une nouvelle valeur de classement.

Dans l’exemple suivant, la fonction WEIGHT donne aux documents avec le mot « Theresa » dans le champ System.Document.LastAuthor la moitié de la valeur de classement des documents avec « Theresa » dans le champ System.Author :

WHERE CONTAINS ( System.Author,'"Theresa"' ) 
         RANK BY WEIGHT ( 1.000 )
      OR
      CONTAINS ( System.Document.LastAuthor,'"Theresa"' ) 
         RANK BY WEIGHT ( 0.500 ) 

 

Notes

Les fonctionnalités de pondération des colonnes de prédicat CONTAINS et FREETEXT prennent en charge un format abrégé à l’aide d’un signe deux-points entre le terme de recherche et le multiplicateur (« software »:0.25). La clause RANK BY ne prend pas en charge la forme abrégée.

 

Il existe une limitation lors de l’utilisation de RANK BY WEIGHT : elle ne fonctionne pas avec les clauses CONTAINS qui utilisent des conditions booléennes ; par exemple, l’exemple suivant n’est pas autorisé :

CONTAINS ( System.Author,'"Theresa" OR "Teresa"' ) RANK BY WEIGHT ( 0.400 )

FONCTION COERCITION

La fonction de contrainte de classement peut être utilisée pour modifier la valeur de classement retournée par addition ou multiplication ou en lui attribuant une valeur spécifique.

La syntaxe de la fonction COERCION est la suivante :

COERCION ( <coercion_operation> , <coercion_value> )

La valeur de contrainte est une valeur entière.

Le tableau suivant décrit les paramètres d’opération de contrainte disponibles.

Opération de coercition Description Plage de valeurs
ABSOLUTE La valeur de classement retournée est la valeur spécifiée dans la valeur de contrainte. 0 à 1000
ADD La valeur de classement retournée est la somme de la valeur de classement brut et de la valeur de contrainte spécifiée. 0.001 à 1.0
MULTIPLY La valeur de classement retournée est le produit de la valeur de classement brut et de la valeur de contrainte spécifiée. 0.001 à 1.0

 

 

Important

La recherche peut retourner des valeurs de classement uniquement dans la plage de 0 à 1 000.

 

 

L’exemple suivant utilise la fonction COERCITION pour définir tous les documents avec « ordinateur » dans le titre pour qu’ils aient un rang de 1 000, tout en réduisant d’un quart le rang des documents contenant à la fois « ordinateur » et « software » dans le titre.

WHERE CONTAINS ( System.Title, 'computer' )
        RANK BY COERCION ( ABSOLUTE , 1000 )
        OR 
       CONTAINS ( System.Title, '"computer" AND "software"' )
        RANK BY COERCION ( MULTIPLY, 0.750 )