Algolia est une puissante solution de recherche en tant que service qui alimente la recherche pour les plus grandes marques du monde dans divers secteurs verticaux. L’intégration avec Algolia exploite les attributs d’engagement des utilisateurs de Dynamic Yield et les informations basées sur l’apprentissage automatique, ajoutant ainsi une couche de personnalisation à Algolia.
Cas d’utilisation
Personnaliser les résultats de recherche pour fournir la meilleure adéquation pour chaque visiteur (selon ses affinités).
La personnalisation est possible en factorisant l’affinité de l’utilisateur Dynamic Yield dans les résultats de recherche.
Prérequis
- Un compte Dynamic Yield et un compte Algolia. Chaque compte est vendu et géré séparément.
- Un flux de produits Dynamic Yield. Les flux multilingues ne sont pas pris en charge.
Injecter de l’affinité : comment cela fonctionne-t-il ?
- Créez une campagne de code personnalisé et ciblez toutes les pages qui utilisent Algolia.
- Ajoutez une variation et collez le code approprié. Voir les exemples de code.
- Sauvegardez l’action personnalisée.
L’action personnalisée expose un objet appelé DY.CS.affinityToAlgolia qui contient l’affinité de rendement dynamique au format Algolia pour injecter des filtres facultatifs.
Lorsque vous initialisez l’API Algolia :
- Ajoutez la clé optionalFilters à l’objet.
- Attribuez l’objet DY.CS.affinityToAlgolia comme valeur.
Exemples de code
index.search({
query: 'query',
optionalFilters: DY.CS.affinityToAlgolia
}).then(res => {
// console.log(res);
});
var userId = DYO.StorageUtils.get('_dyid','localStorage');
var dyHost = DYO.hosts.rcom;
window.DY.CS = window.DY.CS || {};
getAffinity(DY.scsec, userId, 2)
function getAffinity(section,userId,limit){
var xhr = new XMLHttpRequest();
xhr.open('GET', dyHost + '/userAffinities?limit='+limit+'&sec='+section+(userId?'&uid='+userId:""));
xhr.onload = function() {
if (xhr.status === 200) {
console.log('got user affinity : ' +xhr.responseText);
DY.CS.affinityAlgolia = DYAffinityToAlgoliaFilter(JSON.parse(xhr.responseText));
}
else {
console.log('error getting affinity');
}
};
xhr.send();
}
function DYAffinityToAlgoliaFilter(affinities){
var filter = [];
if (affinities !== {}){
for (var affinity in affinities){
for (var val in affinities[affinity]){
filter.push(affinity+":"+val+"<score="+affinities[affinity][val]+">")
}
}
}
return filter;
}
Dépannage de l’intégration d’Algolia
Assurez-vous que l’objet DY.CS.affinityToAlgolia est défini dans le navigateur et qu’il est correctement alimenté en données :
- Visualisez plusieurs PDP et ajoutez des articles au panier pour créer une affinité avec l’utilisateur.
- Naviguez vers une page qui utilise Algolia, ouvrez la console des outils de développement et écrivez DY.CS.affinityToAlgolia. Cette commande renvoie un tableau contenant les affinités que vous avez créées et les scores qui leur sont associés.
- Si la réponse attendue n’est pas renvoyée, procédez comme suit :
- Vérifiez que la campagne de code personnalisé est active, qu’elle cible les bonnes pages et qu’elle inclut le bon code.
- Vérifiez que vous avez correctement construit l’affinité utilisateur en exécutant l’API côté client User Affinity. Si la réponse renvoie vos données d’affinité utilisateur, cela signifie que cette partie de l’implémentation fonctionne correctement.
Validez l’appel réseau Algolia :
- Ouvrez vers une page qui sert Algolia, ouvrez la console des outils de développement et cliquez sur l’onglet Network.
- Écrivez « Algolia » dans le filtre réseau, et lancez une requête de recherche sur le site web.
- Dans les résultats, recherchez un appel réseau qui commence par « query?x-algolia-agent » et sélectionnez-le. Il s’agit de l’appel que votre site adresse à Algolia avec les critères de recherche.
- Dans la charge utile de l’appel réseau, localisez le paramètre optionalFilters dans les données du formulaire. Ce paramètre transmet l’affinité de l’utilisateur Dynamic Yield à Algolia dans un format compréhensible.
- Si le paramètre n’existe pas, implémentez l’injection de code d’affinité d’utilisateur pour l’exemple dans la section Exemples de code.
- Si le paramètre existe avec vos données d’affinité utilisateur, cela signifie que cette partie de l’implémentation fonctionne correctement.