Le classement des résultats de recherche suit généralement un processus en deux étapes. La première étape, le tri approximatif (rough sort), filtre rapidement les résultats initiaux pour identifier un sous-ensemble de documents de haute qualité. La seconde étape, le tri détaillé (fine sort), applique ensuite une logique de notation plus complexe à cet ensemble afin d'établir le classement final. Le tri approximatif a un impact significatif sur les performances de la recherche, tandis que le tri détaillé influence davantage la qualité du classement. Par conséquent, le tri approximatif doit rester simple et efficace, en n'utilisant que les facteurs de classement les plus critiques. Le tri approximatif et le tri détaillé se configurent tous deux à l'aide d'expressions de tri. Cette rubrique décrit les fonctions que vous pouvez utiliser dans un tri approximatif.
Fonctions
static_bm25 : Calculer la pertinence textuelle statique
Syntaxe : static_bm25()
Paramètres : Aucun.
Valeur de retour : Une valeur flottante comprise dans l'intervalle [0,0 ; 1,0].
Scénario : Utilisez cette fonction dans une expression de tri approximatif pour intégrer le score de pertinence textuelle statique. Exemple :
static_bm25().-
Notes :
La fonction
static_bm25()est activée par défaut dans la configuration de tri approximatifdefault.
Cas où le score static_bm25() peut dépasser 1,0 :
Si une requête utilise des fonctionnalités d'analyse telles que les synonymes (par exemple, une requête pour index:'Apple' est étendue en query=index:'Apple' OR index:'apple'), le score static_bm25() s'accumule pour les documents correspondant à la fois à « Apple » et à « apple », ce qui entraîne un score de tri approximatif final supérieur à 1.
exact_match_boost : Obtenir le poids de boost maximal
Syntaxe : exact_match_boost()
Paramètres : Aucun.
Valeur de retour : Un entier compris dans l'intervalle [0 ; 99].
Scénario : Vous souhaitez classer les documents en fonction du poids de boost du terme correspondant. Pour une requête telle que
query=default:'OpenSearch'^60 OR default:'opensearch'^50, un document contenant « OpenSearch » sera mieux classé qu'un document contenant « opensearch ». L'expression de tri approximatif serait :exact_match_boost().-
Notes :
Les champs référencés dans la requête doivent être configurés en tant que champs d'index.
Pour les termes de requête sans boost spécifié, la valeur de boost par défaut est 99.
Pour les applications dédiées, lorsqu'elle est utilisée dans un tri approximatif, la fonction
exact_match_boostprend en chargesumetmaxcomme paramètres optionnels.
timeliness : Calculer un score d'actualité
Syntaxe : timeliness(pubtime)
Paramètre :
pubtime: Champ à évaluer. Doit être un entier représentant un horodatage Unix en secondes.Valeur de retour : Une valeur flottante comprise dans l'intervalle [0,0 ; 1,0]. Une valeur plus élevée indique un document plus récent. La fonction renvoie 0,0 si l'horodatage est dans le futur.
Scénario : Pour prendre en compte l'ancienneté du document en fonction du champ
create_timestamp, utilisez l'expression :timeliness(create_timestamp).-
Notes :
Le champ
pubtimedoit être configuré en tant que champ d'attribut.
timeliness_ms : Calculer un score d'actualité
Syntaxe : timeliness_ms(pubtime)
Paramètre :
pubtime: Champ à évaluer. Doit être un entier représentant un horodatage Unix en millisecondes.Valeur de retour : Une valeur flottante comprise dans l'intervalle [0,0 ; 1,0]. Une valeur plus élevée indique un document plus récent. La fonction renvoie 0,0 si l'horodatage est dans le futur.
Scénario : Pour prendre en compte l'ancienneté du document en fonction du champ
create_timestamp, utilisez l'expression :timeliness_ms(create_timestamp).-
Notes :
Le champ
pubtimedoit être configuré en tant que champ d'attribut.
normalize : Normaliser une valeur numérique
Aperçu : Dans les calculs de pertinence, la qualité des documents se mesure selon différentes dimensions. Les scores issus de ces dimensions ont souvent des plages de valeurs très différentes. Par exemple, le nombre de clics sur un document peut atteindre des millions, tandis que son score de pertinence textuelle se situe entre 0,0 et 1,0. Ces valeurs ne sont pas directement comparables. Pour les utiliser conjointement dans une formule, vous devez d'abord les normaliser sur une échelle commune. La fonction
normalizeoffre un moyen simple d'y parvenir. Elle prend en charge trois méthodes et en sélectionne automatiquement une en fonction des paramètres fournis : la normalisation par arctangente (avec uniquement le paramètrevalue), la normalisation logarithmique (avecvalueetmax), et la normalisation linéaire (avecvalue,maxetmin).Syntaxe : normalize(value, max, min)
Paramètres :
Valeur de retour : Une valeur double comprise dans l'intervalle [0,0 ; 1,0].
-
Scénario 1 : Pour normaliser le champ
pricelorsque sa plage de valeurs est inconnue, utilisez :normalize(price).Scénario 2 : Pour normaliser le champ
pricelorsque seule sa valeur maximale (par exemple, 100) est connue, utilisez :normalize(price, 100).Scénario 3 : Pour normaliser le champ
pricelorsque ses valeurs maximale (100) et minimale (1) sont toutes deux connues, utilisez :normalize(price, 100, 1).Scénario 4 : Pour normaliser le résultat de la fonction
distancedans l'intervalle [0,0 ; 1,0], utilisez :normalize(distance(longitude_in_doc, latitude_in_doc, longitude_in_query, latitude_in_query)). -
Notes :
Les champs utilisés comme paramètres doivent être configurés en tant que champs d'attribut.
Pour la normalisation par arctangente, si la
valueest inférieure à 0, la fonction renvoie 0,0.Pour la normalisation logarithmique, la valeur
maxdoit être supérieure à 1,0.Pour la normalisation linéaire, la valeur
maxdoit être supérieure à la valeurmin.
category_score : Fonction de prédiction de catégorie
Description : Cette fonction renvoie un score indiquant dans quelle mesure la catégorie d'un document correspond à la catégorie prédite pour la requête.
-
Syntaxe :
category_score(cate_id) -
Paramètre :
cate_id: Champ utilisé comme ID de catégorie lors de l'entraînement du modèle. Doit être un entier. Valeur de retour : Un entier compris dans l'intervalle [0 ; 2].
Scénario : Utilisez
category_score(cate_id)dans une expression de tri. Pour plus d'informations, consultez la rubrique Utiliser la fonctionnalité de prédiction de catégorie.-
Notes :
Cette fonction doit être utilisée avec l'algorithme de prédiction de catégorie.