Filtrage avancé
Dans la section « faceting », nous mettons en évidence comment il est possible d’obtenir les filtres disponibles pour une requête de recherche et d’appliquer des filtres pour affiner les résultats de recherche. Par exemple, après avoir recherché « shoes », un acheteur peut vouloir affiner les résultats en appliquant un filtre sur l’attribut de couleur et en choisissant une valeur telle que rouge. Cela affichera uniquement les « red » shoes dans les résultats. Si à ce stade, l’acheteur choisit encore une autre couleur, par exemple bleu, Klevu affichera maintenant à la fois les « red » et les « blue » shoes. Ainsi, il appliquera l’opération OR entre les valeurs du même attribut. Si à cette étape, l’acheteur choisit « cotton » comme matériau, le système affichera à la fois les chaussures rouges et bleues, mais il s’assurera également que tous les produits ont « cotton » comme matériau. En d’autres termes, il applique l’opération AND parmi les différents types d’attributs sélectionnés.
Cependant, il arrive un moment où l’on peut vouloir effectuer des opérations de filtrage complexes, ou en d’autres termes, des opérations de filtrage avancées. Par exemple, vous pouvez vouloir afficher un groupe de chaussures où la « color is red » et où la « brand is NOT Adidas ». Vous pouvez également vouloir ajouter un autre groupe de chaussures à cet ensemble de résultats. Par exemple, où la « color is blue or black », la « brand is Nike » et où la « price range is between 100 and 400 ». Comme vous pouvez le constater, contrairement au comportement du « faceting », dans notre exemple ici, nous souhaitons avoir un ou plusieurs groupes de produits correspondant à différents groupes de conditions pour que l’ensemble final de produits soit renvoyé.
C’est dans cette intention de permettre des opérations de filtrage avancées sur l’ensemble de résultats que nous avons introduit une nouvelle fonctionnalité appelée « advanced filtering » dans notre API.
Avant l’introduction du filtrage avancé, si un utilisateur demandait que des filtres soient renvoyés ou que certains soient appliqués, Klevu déterminait auparavant un ensemble de produits pertinents correspondant à la requête de l’utilisateur. Il incluait/excluait ensuite tous les produits explicitement demandés dans cet ensemble de résultats. Ce n’est qu’après cette étape qu’il calculait tous les filtres possibles à renvoyer et appliquait également les filtres sélectionnés pour affiner les résultats de recherche. Ainsi, si un produit ajouté explicitement ne correspondait pas au filtre appliqué, il était exclu de l’ensemble final des résultats.
Avec l’ajout du filtrage avancé, Klevu identifie maintenant un ensemble de produits pertinents correspondant à la requête. Il applique ensuite le filtrage avancé à celui-ci. Ce n’est qu’après cette étape qu’il inclut/exclut les produits explicitement demandés, calcule les filtres en fonction de cet ensemble de résultats et applique finalement les filtres sélectionnés pour affiner les résultats de recherche. De cette façon, si un filtrage doit être appliqué avant l’inclusion/exclusion explicite de produits, le filtrage avancé doit être utilisé.
Veuillez noter que le filtrage avancé peut également être utilisé avec les API de Category Merchandising et Recommendation.
L’objet condition de groupe peut être utilisé pour appliquer les conditions de filtrage avancé afin que vos clients puissent affiner leurs résultats en fonction d’attributs pertinents.
{
"context":{
"apiKeys":[
"klevu-156925593843210765"
]
},
"recordQueries":[
{
"id":"productSearch",
"typeOfRequest":"SEARCH",
"settings":{
"typeOfRecords":[
"KLEVU_PRODUCT"
],
"groupCondition":{
"groupOperator":"ANY_OF",
"conditions":[
{
"key":"klevu_price",
"valueOperator":"INCLUDE",
"singleSelect":true,
"excludeValuesInResult":true,
"values":[
"20 - 25"
]
},
{
"key":"itemGroupId",
"valueOperator":"EXCLUDE",
"singleSelect":false,
"values":[
"4384028262462"
]
},
{
"key":"size",
"valueOperator":"EXCLUDE",
"singleSelect":false,
"values":[
"Small",
"Large"
]
},
{
"key":"brand",
"valueOperator":"EXISTS"
},
{
"key":"discount",
"valueOperator":"NOT_EXISTS"
}
]
},
"query":{
"term":"tee"
},
"limit":2
}
}
]
}