Transverse — Matching inter-bannières (product_links)
Généré automatiquement par scripts/gen_connector_docs.py.
Mécanique (foodka/matching.py)
matching.py : rapprochement inter-bannières — « le même produit ailleurs » Après chaque cycle d'ingestion, reconstruit la table product_links (group_id, uid) : groupes de produits ACTIFS identiques vendus par des bannières DIFFÉRENTES, rapprochés par clé normalisée marque + nom nettoyé + format. Matching CONSERVATEUR (mieux vaut rater un rapprochement qu'en inventer) :
- marque non vide obligatoire (égalité stricte après normalisation) ;
- format identique (quantité + unité de base via parse_size) ;
- similarité élevée entre noms nettoyés (accents/casse/mots vides/ format retirés, jetons triés) — seuil 0,86, ou 0,95 si aucun format n'est connu de part et d'autre. Une source « *_flyer » est la même bannière que sa source catalogue (metro / metro_flyer) : un groupe doit couvrir >= 2 bannières distinctes.
État live
- Groupes de produits identiques : 1 518
- Produits rapprochés : 3 638
- Règles conservatrices : marque non vide et strictement égale ; format identique (quantité + unité de base) ; similarité de noms nettoyés ≥ 0,86 (0,95 sans format) ; un groupe couvre ≥ 2 bannières distinctes (
*_flyer= même bannière que son catalogue). - Garde-fous perf : MAX_BLOCK 3000, comparaisons en fenêtre triée de 30 (coût linéaire ; rebuild mesuré à ~7 s).
Taille des groupes
| Produits par groupe | Groupes |
|---|---|
| 2 | 1127 |
| 3 | 278 |
| 4 | 67 |
| 5 | 22 |
| 6 | 13 |
| 7 | 5 |
| 8 | 1 |
| 9 | 2 |
| 10 | 1 |
| 11 | 1 |
| 12 | 1 |
Sources les plus rapprochées
| Source | Produits dans un groupe |
|---|---|
maxi |
675 |
provigo |
638 |
club_entrepot |
345 |
metro |
301 |
superc |
291 |
nuvo |
169 |
iga_flyer |
101 |
pa |
99 |
tradition |
96 |
aliments_merci |
79 |
Reconstruit après chaque cycle d'ingestion (table repartie de zéro : idempotent).