Tous les produits
Search
Centre de documentation

OpenSearch:Politiques de tri

Dernière mise à jour :Aug 10, 2026

Les moteurs de recherche exigent des performances de récupération élevées. Pour y répondre, le système propose un processus de tri en deux étapes : le tri approximatif et le tri précis. Le tri approximatif sélectionne rapidement un sous-ensemble de documents de haute qualité (les N premiers résultats) parmi ceux issus de la récupération initiale. Ces documents subissent ensuite un tri précis avec une notation détaillée afin de renvoyer les résultats les plus pertinents. Le tri approximatif impacte principalement les performances, tandis que le tri précis détermine la qualité finale des résultats. Par conséquent, le tri approximatif doit être simple et efficace, en utilisant uniquement les facteurs clés du tri précis. Les deux étapes se configurent à l'aide d'expressions de tri.

Une expression de tri (également appelée formule de classement) vous permet de personnaliser le classement des résultats de recherche pour votre application. Spécifiez une expression dans la requête de recherche pour trier les résultats. Une expression de tri prend en charge les opérations de base (arithmétiques, relationnelles, logiques, binaires et conditionnelles), les fonctions mathématiques et les fonctions de tri précis. Pour les applications courantes telles que les forums et les sites d'actualités, OpenSearch fournit des bonnes pratiques pour le tri par pertinence. Utilisez-les comme modèles, modifiez-les selon les caractéristiques de vos données et créez vos propres expressions.

Avant de configurer le classement basé sur la pertinence (tri précis), comprenez le comportement de tri par défaut du système. Une fois les documents correspondant à la requête trouvés, ils entrent dans l'étape de tri. Pour plus d'informations, consultez la rubrique relative à la clause de tri. Si vous ne spécifiez pas de clause de tri, ou si celle-ci inclut explicitement RANK, l'étape de calcul de la pertinence commence.

La conception des expressions de tri pour le tri approximatif et le tri précis dépend de vos exigences de recherche. L'article sur le tri par pertinence offre un guide détaillé sur la conception et la sélection des facteurs de classement pour plusieurs scénarios typiques.

Remarque

Dans une expression de tri, utilisez des valeurs numériques ou des champs numériques pour les opérations de base telles que les opérations arithmétiques, relationnelles, logiques et conditionnelles. La plupart des fonctions ne prennent pas en charge les opérations sur les types de chaîne.

Opérations de base

|
Opération
|
Opérateur
|
Description
| | --- | --- | --- | |
Opération unaire
|
-
|
Le signe moins (-). Inverse la valeur d'une expression. Exemples : -1, -max(width).
| |
Opération arithmétique
|
+, -, *, /
|
Exemple : width / 10
| |
Opération relationnelle
|
==, !=, >, <, >=, <=
|
Exemple : width>=400
| |
Opération logique
|
and, or, !
|
Exemples : width>=400 and height >= 300, !(a > 1 and b < 2)
| |
Opération binaire
|
&, |, ^
|
Exemple : 3 & (price ^ pubtime) + (price | pubtime)
| |
Opération conditionnelle
|
if(cond, thenValue, elseValue)
|
Si l'expression `cond` évalue une valeur non nulle, la fonction renvoie `thenValue` ; sinon, elle renvoie `elseValue`. Par exemple, `if(2, 3, 5)` renvoie 3 et `if(0, 3, 5)` renvoie 5. Remarque : les types de champ de chaîne tels que `literal` ou `text` ne sont pas pris en charge. La valeur renvoyée doit se situer dans la plage `int32`.
| |
Opération in
|
i in [value1, value2, …, valuen]
|
Si `i` figure dans l'ensemble `[value1, value2, ..., valuen]`, l'expression renvoie 1 ; sinon, elle renvoie 0. Par exemple, `2 in [2, 4, 6]` renvoie 1 et `3 in [2, 4, 6]` renvoie 0.
|

Fonctions mathématiques

|
Fonction
|
Description
| | --- | --- | |
max(a, b)
|
Renvoie la plus grande valeur entre a et b.
| |
min(a, b)
|
Renvoie la plus petite valeur entre a et b.
| |
ln(a)
|
Renvoie le logarithme naturel de a.
| |
log2(a)
|
Renvoie le logarithme en base 2 de a.
| |
log10(a)
|
Renvoie le logarithme en base 10 de a.
| |
sin(a)
|
Renvoie le sinus de a.
| |
cos(a)
|
Renvoie le cosinus de a.
| |
tan(a)
|
Renvoie la tangente de a.
| |
asin(a)
|
Renvoie l'arcsinus de a.
| |
acos(a)
|
Renvoie l'arccosinus de a.
| |
atan(a)
|
Renvoie l'arctangente de a.
| |
ceil(a)
|
Renvoie le plus petit entier supérieur ou égal à a. Par exemple, ceil(4,2) renvoie 5.
| |
floor(a)
|
Renvoie le plus grand entier inférieur ou égal à a. Par exemple, floor(4,6) renvoie 4.
| |
sqrt(a)
|
Renvoie la racine carrée de a. Par exemple, sqrt(4) renvoie 2.
| |
pow(a,b)
|
Renvoie la valeur de a élevé à la puissance b. Par exemple, pow(2, 3) renvoie 8.
| |
now()
|
Renvoie l'heure actuelle en secondes depuis l'époque (00:00:00 UTC, 1er janvier 1970).
| |
random()
|
Renvoie une valeur aléatoire comprise entre 0 et 1.
|

Fonctions de fonctionnalité intégrées

OpenSearch propose diverses fonctions de tri approximatif, notamment des fonctions LBS, textuelles et de temporalité. Combinez-les dans une expression de tri pour mettre en œuvre un tri par pertinence puissant.

Plug-in Cava

Cava est un langage de programmation haute performance développé par l'équipe du moteur OpenSearch, basé sur LLVM. Sa syntaxe est similaire à celle de Java et ses performances sont comparables à celles du C++. Cava est un langage orienté objet qui prend en charge la compilation juste-à-temps (JIT) et diverses vérifications de sécurité pour garantir la robustesse du programme. En utilisant Cava et les bibliothèques Cava fournies, créez des plug-ins de tri personnalisés dans OpenSearch. Par rapport à l'utilisation d'une expression de tri standard, un plug-in Cava offre les avantages suivants :

  • Personnalisation accrue : Cava offre des fonctionnalités syntaxiques plus riches que les expressions, telles que les boucles for et les définitions de fonctions et de classes, ce qui permet de répondre à des exigences métier complexes.

  • Maintenance simplifiée : Un plug-in Cava est plus lisible et plus facile à maintenir qu'une expression de tri complexe.

  • Courbe d'apprentissage réduite : La syntaxe Cava est similaire à celle de Java, ce qui facilite son apprentissage pour les développeurs Java.

Remarque : Configurez le plug-in Cava uniquement pour une application dédiée.

Procédure

Cette section utilise une fonction de pertinence textuelle comme exemple pour montrer comment configurer les politiques de tri approximatif et de tri précis.

  1. Créez une politique de tri approximatif. Dans la OpenSearch console, sélectionnez OpenSearch High-performance Search Edition dans le coin supérieur gauche. Accédez à Search Configuration Center > Sort Configuration > Policy Management, puis cliquez sur Create. Saisissez un Policy Name, définissez Scope sur Rough Sort et Type sur Expression, puis cliquez sur Next.

    Sélectionnez « static_bm25 » comme fonctionnalité de scoring et définissez le poids sur « 10 ». Un poids de 10 signifie que le score est multiplié par 10 lors du calcul. Vous pouvez également ajouter un champ de recherche au tri. Le champ doit être un champ d'attribut et doit être de type numérique, tel que INT, DOUBLE ou FLOAT. Lorsque vous définissez un poids pour le champ, la valeur du champ multipliée par son poids est ajoutée au score de tri.

    Par exemple, ajoutez le champ sale_price au tri et définissez le poids pour le champ pid sur 0.08.

    Une fois la configuration terminée, revenez à la page Policy Management. Le message « Sort policy configured successfully » s'affiche. Cliquez sur Search Test pour vérifier la configuration de tri.

  2. Créez une politique de tri précis. Dans la console OpenSearch, cliquez sur Create. Saisissez un Policy Name, définissez Scope sur Fine Sort et Type sur Expression, puis cliquez sur Next.

    Sélectionnez 'text_relevance' parmi les fonctions intégrées, saisissez le nom d'un champ de l'index entre parenthèses, puis cliquez sur Complete. À l'étape Sort Configuration, utilisez les listes déroulantes Field et Built-in Function pour générer l'expression de tri text_relevance(brand), puis cliquez sur Complete. La configuration est terminée et vous êtes redirigé vers la page Policy Management.

  3. Consultez les résultats de tri. Sur la page Search Test, configurez les paramètres pour le tri approximatif et le tri précis, et activez l'option Show Sort Details. Définissez le paramètre first_rank_name sur test_1 (tri approximatif) et le paramètre second_rank_name sur test_2 (tri précis). Affichez ensuite le calcul du score pour chaque fonction.

    Les détails du tri apparaissent sous chaque résultat de recherche. Cela inclut le score total de tri (par exemple, 10000.2259030193) et les résultats individuels de chaque expression, tels que static_bm250, static_bm250*10 et text_relevance(brand).

    Remarque

    Le scoring des documents s'effectue en deux étapes : le tri approximatif et le tri précis. Les documents récupérés par une requête et ayant passé le filtre subissent d'abord un tri approximatif. Les documents à score élevé sont sélectionnés sur la base de l'expression de tri approximatif. Ensuite, les N premiers résultats sont notés avec précision à l'aide de l'expression de tri précis pour renvoyer les résultats optimaux.

    • Si seule une politique de tri approximatif est configurée, le score du document est (10000 + le résultat de l'expression de tri approximatif). Si le score calculé dépasse 20 000, il est plafonné à 20 000.

    • Si seule une politique de tri précis est configurée, le score du document est (10000 + le résultat de l'expression de tri précis). Il n'y a pas de limite supérieure pour le score.

    • Si les politiques de tri approximatif et de tri précis sont toutes deux configurées, le score final des documents qui entrent dans l'étape de tri précis est (10000 + le résultat de l'expression de tri précis). Le score final des autres documents est (10000 + le résultat de l'expression de tri approximatif). Si ce score dépasse 20 000, il est plafonné à 20 000.

    • Vous pouvez créer plusieurs règles de tri approximatif et de tri précis. Toutefois, une requête ne peut utiliser qu'une seule règle de tri approximatif et une seule règle de tri précis à la fois.

    Important
    • Le paramètre first_rank_name prend en charge uniquement un nom d'expression de tri. Vous ne pouvez pas utiliser plusieurs expressions de tri approximatif en même temps.

    • Le paramètre second_rank_name prend en charge uniquement un nom d'expression de tri. Vous ne pouvez pas utiliser plusieurs expressions de tri précis en même temps.

Exemples de configuration SDK

Exemple de SDK Java :

// Set the rough and fine sort expressions. This example uses the default policies.
Rank rank = new Rank();
rank.setFirstRankName("default"); // The name of the rough sort policy.
rank.setSecondRankName("default"); // The name of the fine sort policy.
rank.setReRankSize(5); // The number of documents for fine sorting.

Exemple de SDK PHP :

// Specify the rough sort expression.
$params->setFirstRankName('default');
// Specify the fine sort expression.
$params->setSecondRankName('default');

Remarques :

  • Si vous configurez des politiques de tri approximatif et de tri précis par défaut dans la console, mais que vous spécifiez également des politiques différentes dans votre code, les politiques définies dans le code ont la priorité au moment de la requête.

  • Pour afficher les détails du tri dans votre code :

    Ajoutez le paramètre format:fulljson à la clause config.

    Dans le résultat, sortExprValues contient les informations de score du document.

    "sortExprValues": [
        "10000.0399786383"
    ],
    "property": { ... }

    sortExprValues est un tableau qui contient les valeurs des champs de tri spécifiés dans la clause sort. Par exemple, pour la clause :

    sort=-price;-RANK

    sortExprValues contiendrait la valeur du champ price suivie du score final du document.

    Si vous ne spécifiez pas de clause sort, sortExprValues contient uniquement le score final du document.