Cum faci un algoritm de sortare pentru un site de afiliere tip agregator

Cum poți rezolva problema ordonării produselor într-un site de afiliere tip agregator.

De Ciprian Drăgoi Îmbin programarea web cu marketing-ul afiliat de peste 7 ani cu scopul de a-mi dezvolta creativitatea și de a avea venituri pasive.
close up photo of matrix background

Partea bună la un site de afiliere de tip agregator e că poți avea relativ ușor un site cu foarte multe produse (sute de mii, milioane). Partea proastă e că asta vine cu niște provocări tehnice și alegeri pe care trebuie să le faci ca să păstrezi un oarece control în modul de funcționare al site-ului (atât dpdv. UX cât și SEO).

Ordonarea produselor

Provocarea despre care voi vorbi astăzi este sortarea produselor (ordinea în care le afișezi într-o categorie / o secțiune de recomandări / pe homepage etc).

Varianta standard într-un site e să afișezi conținutul în funcție de data de adăugare (cel mai nou = primul). Site-urile de tip agregator funcționează pe bază de feed-uri de produse. Feed-uri care sunt verificate la fiecare {x} minute ca să vedem ce produse noi au mai apărut și care au dispărut.

Procesarea unui feed se face la nivelul întregului fișier, lucru care înseamnă că dacă vei folosi această abordare standard, tot timpul vei avea în fruntea listelor din site produse de la același magazin (cele mai noi produse din ultimul feed procesat). E de ajuns să ai doar 500 de produse noi ca să ai primele 5-10-20 pagini din site blocate cu produsele unui singur magazin.

Algoritm ordonare produse

Pentru a rezolva acest lucru trebuie să ne folosim de un algoritm care să genereze un rating fiecărui produs și să facem ordonarea în funcție de acest rating. Cu cât vorbim de un număr mai mare de produse, cu atât trebuie ca acest număr să aibă cât mai multe zecimale (eu folosesc un număr din intervalul 0-100 cu 8 zecimale).

Ce parametrii folosim?

Primul lucru pe care trebuie să-l facem pentru acest algoritm e să ne decidem care sunt parametrii cei mai importanți pentru noi (pot diferi în funcție de nișă) și să le dăm o importanță/pondere (un număr de la 0 la 100 și unde toate adunate să dea 100).

Un algoritm nu este altceva decât o serie de parametrii-valori peste care este aplicată mai multă sau mai puțină matematică. Nu încercăm să trimitem sateliți pe orbită așa că în acest caz matematica este destul de simplă.

Mai jos sunt câteva exemple de tipuri de parametrii de care ne putem folosi. Bineînțeles că imaginația e limita. Pe scurt, aș putea spune că un astfel de parametru trebuie să fie un criteriu care poate influența decizia vizitatorului de cumpărare.

Importanță magazin

Acest parametru este unul discreționar, în sensul că trebuie să declari manual o valoare pentru fiecare magazin în intervalul 0-100. Eu iau în calcul notorietatea magazinului, comisionul, promoții, calitatea site-ului, rata de aprobare etc.

Noutate

Numărul de secunde de la apariția produsului în feed. Scopul acestui parametru ar fi să putem favoriza produsele mai noi.

Discount

Discount-ul în procente față de prețul aceluiași produs de acum 3 zile. Scopul acestui parametru ar fi să putem favoriza produsele cu discount recent.

Permite PPC

Dacă magazinul promovat permite PPC (în special CSS), sunt destul de mari șanse ca cookie-ul tău (bazat pe trafic organic din SEO) să fie suprascris de un afiliat care face CSS. Asta înseamnă că ne dorim să punem mai în spate produsele unor astfel de magazine.

Livrare Easybox

Un criteriu recent intrat în atenția mea, observând cât de mult mi-a schimbat personal decizia de a comanda de la un magazin în detrimentul altuia. Ne dorim să punem mai în față produsele cu livrare la easybox.

Număr vizualizări 30 zile

Este destul de clar din denumire ce valoare trebuie să conțină. Dacă are multe vizualizări recent, înseamnă că e un produs de interes și vrem să-l punem mai în față.

Număr clickuri 30 zile

Asemenea parametrului de mai sus, dacă i-a făcut pe mulți vizitatori să dea click, înseamnă că ceva le-a atras atenția și profităm de această informație ca să actualizăm și poziția în site.

Importanță brand

Pe anumite nișe (când zic nișă mă refer inclusiv doar la categoria Blugi dintr-un site de Fashion), unele branduri sunt vizibil mai cumpărate și cu interes mai mare. Asta înseamnă că trebuie să avem un nomenclator de importanțe pentru branduri (la fel ca la magazine, o notă de la 0 la 100) și să putem oferi o poziționare mai bună produselor unui brand.

Randomizare

Dacă vorbim de foarte multe produse, e posibil ca multe din criteriile de mai sus să aibă valori egale (de ex. număr de clickuri și vizualizări = 0 pentru multe produse noi). Din această cauză trebuie să introducem și un element care să depindă de soartă :), adică să generăm aleator un număr pe care să-l putem folosi pentru diferențiere între 2 produse care conform celorlalte criterii sunt egale.

Exemplu de cod PHP

Dacă ești din lumea programării poți înțelege ușor de ce nu pot oferi un sistem plug&play universal valabil pentru orice platformă, așadar voi lăsa mai jos un exemplu de cod PHP care poate fi adaptat în funcție de nevoi.

<?php
//e important ca totalul ponderilor sa dea 100
$criterii = array();
$criterii['importanta_magazin'] = 15;
$criterii['noutate'] = 10;
$criterii['discount'] = 5;
$criterii['permite_ppc'] = 5;
$criterii['livrare_easybox'] = 10;
$criterii['clickuri_30z'] = 15;
$criterii['vizualizari_30z'] = 20;
$criterii['importanta_brand'] = 10;
$criterii['randomizare'] = 10;

//valorile specifice fiecarui produs normalizate cu valori intre 0-100
$valori = array();
$valori['importanta_magazin'] = 80;
$valori['noutate'] = 98;
$valori['discount'] = 20;
$valori['permite_ppc'] = 0; //100 daca nu permite
$valori['livrare_easybox'] = 100; //0 daca nu permite
$valori['clickuri_30z'] = 56;
$valori['vizualizari_30z'] = 100;
$valori['importanta_brand'] = 45;
$valori['randomizare'] = rand(0,100);

$total = 0;
$sum = 0;
foreach ($criterii AS $k => $pondere) {
    $total = $total + ($valori[$k] * $pondere);
    $sum = $sum + $pondere;
}

$rating = $total/$sum;
?>

Tu ce alte criterii ai mai folosi pentru ordonare?

Abonează-te la noutăți!

Vei primi un email de fiecare dată când postez un articol nou.

Categorii
Academie
0 comentarii

Lasă un răspuns

Proiect lansat în noiembrie 2021. Este interzisă copierea conținutului fără menționarea sursei.