Un catalogue, deux langues : le filtre qui suffit, la recherche qui fédère
Un site multilingue pose une question avant même la première recherche : un seul catalogue avec un champ langue, ou un catalogue par langue ? Heurix répond aux deux, et pas de la même façon.
Le filtre lang, pour un catalogue qui reste un seul
lang filtre par langue si vos produits portent ce champ — "fr", "en". Omis, aucun filtrage ne s'applique. Et un produit qui ne porte pas le champ reste visible quelle que soit la langue demandée : utile pour un catalogue majoritairement mono-langue avec quelques fiches bilingues, plutôt que pour deux gammes réellement séparées. Le même filtre s'applique sur Browse & Discovery, à l'identique.
La recherche fédérée, pour plusieurs catalogues à la fois
POST /v1/federated-search interroge plusieurs catalogues en un seul appel et fusionne les résultats par pertinence — jusqu'à 10 catalogues, un par langue ou par marque.
curl -X POST https://api.heurix.fr/v1/federated-search \
-H "Authorization: Bearer VOTRE_CLE_API" \
-d '{"catalogs": ["boutique-fr", "boutique-en"], "q": "pull rouge"}'
Les scores restent comparables entre catalogues même avec des packs de règles différents — pas parce qu'ils sont renormalisés après coup, mais parce que le barème n'a jamais été propre à un catalogue : les poids de score sont globaux au moteur. Chaque résultat porte un champ catalog qui indique sa provenance.
Ce que la réponse dit quand ça ne colle pas
catalogs_searched et catalogs_not_found servent à repérer un nom de catalogue invalide — de simples listes de noms. La vraie nuance porte sur deux autres clés : filters_unknown et radius_no_positions reviennent par catalogue, pas globalement, parce qu'un champ présent dans l'un et absent dans l'autre est le cas normal d'une fédération, pas l'exception. filters_unknown devient un objet par catalogue plutôt qu'une liste plate — {{"agences": [], "produits": ["departement"]}} : les catalogues sans problème y figurent aussi, avec un tableau vide, pour lire d'un coup où le filtre a vraiment porté. radius_no_positions, lui, passe d'un simple booléen, sur une recherche classique, à une liste des catalogues sans aucune coordonnée. Les deux clés restent absentes quand elles n'ont rien à dire.
Un filtre qui ne désigne rien dans un catalogue en écarte tous les résultats sans le sortir de catalogs_searched : la réponse dit avoir cherché dans trois catalogues et n'en avoir servi qu'un, et pourquoi.
Compter les appels, et la limite du plan
Un appel fédéré compte pour autant de requêtes que de catalogues effectivement interrogés — trois catalogues, trois requêtes.
Le nombre de catalogues qu'un compte peut avoir dépend du plan : un seul sur Starter, qui n'inclut d'ailleurs pas la fédération ; trois sur Growth (49 €/mois) ; illimité sur Enterprise. La limite de dix catalogues par appel fédéré, elle, vient de l'API elle-même et ne se heurte qu'en Enterprise : en dessous, le nombre de catalogues du compte est toujours la limite la plus stricte. Le plan Growth autorise trois catalogues ; à raison d'un par langue, cela fait trois langues fédérables — au-delà, la question se pose autrement.
Pour la suite
Quelques fiches bilingues dans un catalogue par ailleurs mono-langue : le filtre lang suffit, sans rien configurer de plus. Des gammes réellement séparées par langue ou par marque : la recherche fédérée les interroge ensemble, dans la limite du plan.