Cascade d'annotations, tolérance aux fautes, synonymes métier, packs par secteur : tout est là, packagé, prêt à brancher sur votre catalogue en quelques appels API. Pas une brique à assembler : un moteur complet.
Des règles regex organisées en niveaux : le niveau 1 reconnaît les motifs bruts d'un texte (« m8 » → diamètre, « 20 » après un « x » → longueur), le niveau 2 compose ces annotations entre elles (diamètre + longueur → référence complète). Documents et requêtes traversent la même cascade : la correspondance se fait dans un espace partagé, pas seulement sur les mots.
« m8x20 » → DIAM_M8 + LONG_20 → VIS_M8X20
« M8 x 20 — A2 » (fiche produit) → même résultat
Comment ça marche →
6205-2RS, W32L34, M8.5 : la normalisation préserve les séparateurs internes (points, tirets, barres obliques) pour que ces références restent un seul token, au lieu d'être éclatées en morceaux qui perdent leur sens.
Structure des produits →Distance de Damerau-Levenshtein bornée : 1 faute tolérée dès 4 caractères, 2 au-delà de 8. Sur les références chiffrées, la tolérance est plafonnée à 1 faute : un chiffre changé désigne un autre produit, pas une faute de frappe.
Voir la démo en haut du site →« Écrou », « ecrou », « ECROU » : même requête normalisée, mêmes résultats. La normalisation s'applique identiquement aux documents indexés et aux requêtes, avant toute autre étape.
« vis inox moins de 5 € » filtre sur le prix au lieu de chercher « moins » et « euros » dans votre catalogue. Sans cette lecture, ces mots comptent comme des termes et élargissent la recherche au lieu de la restreindre. Le fragment reconnu est retiré de la requête, donc il ne pèse pas sur la pertinence, et la contrainte revient dans la réponse pour que vous puissiez l'afficher et la laisser retirer.
« vis inox » 1 397 resultats
« vis inox sous 5 » 1 425 les mots comptent
« vis inox sous 5 € » 1 086 price_filter max 5.0
Tournures reconnues →
Onze packs fournis avec le moteur : outillage (normes DIN/ISO, diamètres, matières), mode (tailles composées, coloris, matières, saisons), industrie (roulements, raccords, pression nominale), automobile (références OEM, motorisation), électricité (calibres, sections, désignations), plomberie (filetages, diamètres nominaux), livres (genres, formats, ISBN), électronique (connectique, puissance, autonomie), vins & spiritueux (millésime, format, degré), finance & compta, sport & glisse (volumes en litres, tailles normalisées, plans de cordage). Pour un besoin plus complexe qu'une Custom Rule (motifs à deux nombres combinés, par exemple), un pack entièrement sur mesure reste possible sur les plans Scale.
Endpoint /v1/rulepacks →Un catalogue de vêtements resté sur le pack outillage ne le sait jamais tout seul. L'endpoint annote un échantillon de votre catalogue avec chaque pack disponible et compare la couverture réelle : le vrai contenu tranche, pas le secteur déclaré à l'inscription. Ne modifie jamais rien : la suggestion est affichée, la décision reste la vôtre.
Un gagnant sans son écart ne se juge pas : marge dit de combien le premier devance son meilleur concurrent, et sur quel critère. Quand ce critère est null, les deux packs annotent exactement autant — le moteur ne recommande alors rien plutôt que de laisser l'ordre alphabétique décider.
GET /v1/index/{catalog}/rulepack-suggestion
→ {"recommande": "mode", "raison": "...",
"marge": {"second": "outillage", "produits_annotes": 31.67,
"annotations_distinctes": 14.0,
"critere": "produits_annotes"}}
POST /v1/rulepacks/suggest même réponse, avant tout import
Endpoint suggestion de pack →
Ajoutez vos propres règles de reconnaissance par-dessus un pack existant, sans écrire la moindre regex, directement depuis la console. Un mot-clé qui doit toujours pointer vers la même étiquette (« placo », « cheville », « molly » → une seule notion), ou un préfixe suivi d'un nombre (codes RAL, normes DIN, teintes). Effet immédiat sur votre recherche, propre à chaque catalogue, jamais partagé avec les autres comptes Heurix.
POST /v1/index/{catalog}/custom-rules
{"rule_type": "keyword", "label": "Cheville",
"keywords": ["placo", "cheville", "molly"]}
Endpoint Custom Rules →
« Vis » retrouve « boulon », « perceuse » retrouve « visseuse ». Les groupes de synonymes sont gérés par API, avec fusion automatique des groupes qui partagent un terme, sans configuration manuelle des doublons.
PUT /v1/index/{catalog}/synonyms
{"groups": [["vis", "boulon", "visserie"]]}
Endpoint synonymes →
Chaque recherche sans résultat est déjà un signal : un client qui n'a pas trouvé. L'endpoint compare ce terme au vocabulaire réel de votre catalogue par la même tolérance aux fautes que la recherche elle-même, jamais par IA ni deviné. Les références chiffrées sont exclues d'office : rapprocher deux produits différents serait le pire synonyme possible, invisible parce que plausible. Vous décidez ; rien n'est créé sans validation.
GET /v1/index/{catalog}/synonym-suggestions?q=rondele
→ {"suggestions": [{"jeton": "rondele", "candidats": [...]}]}
Endpoint suggestions →
Filtrez par genre, format, dimension, matière... avec un décompte disjonctif par groupe : sélectionner « Poche » n'efface pas les autres formats du décompte, exactement comme un filtre de boutique en ligne classique. C'est ce qui alimente les prismes de la démonstration en page d'accueil.
{"q": "polar", "facets": ["FORMAT"], "filters": ["FORMAT_POCHE"]}
→ "facets": {"FORMAT": {"FORMAT_POCHE": 17, "FORMAT_BROCHE": 9, ...}}
Facettes et filtres →
Un site en plusieurs langues, plusieurs marques ? Interrogez plusieurs catalogues en un seul appel, résultats fusionnés par pertinence, chaque résultat indique sa provenance. Les poids de score sont globaux au moteur : comparables entre catalogues, même avec des packs de règles différents.
POST /v1/federated-search
{"catalogs": ["boutique-fr", "boutique-en"], "q": "pull rouge"}
Endpoint recherche fédérée →
Vous fournissez le point, le moteur filtre autour. La géolocalisation du visiteur, le géocodage d'une adresse ou la saisie d'un code postal se passent chez vous : Heurix reçoit un couple lat/lon et un rayon, et rend ce qui tombe dedans. Il ne détermine aucune position et n'appelle aucun service de cartographie.
« Une école de surf à moins de 15 km. » Donnez un point et une distance : le moteur ne rend que ce qui est autour, et chaque résultat porte sa distance en kilomètres — de quoi trier ou afficher sans recalculer quoi que ce soit. C'est la brique d'un réseau de points de vente ou d'agences : ne lister que ceux à proximité d'un visiteur, du plus proche au plus lointain si vous les triez vous-même. Vos produits portent lat et lon comme n'importe quel autre champ, sans réindexation.
Le rayon filtre, il n'entre pas dans le score. Un lieu à 3 km ne passe pas devant un lieu à 14 km s'il correspond moins bien à ce qui est cherché. C'est une décision, pas une limite : mêler la distance à la pertinence ferait remonter le mauvais résultat parce qu'il est proche, et on ne saurait plus lequel des deux critères a décidé.
POST /v1/index/agences/search
{"q": "ecole de surf", "lat": 45.00, "lon": -1.20, "radius_km": 15}
Paramètres du rayon →
Un compte, autant de catalogues que nécessaire : par langue, par marque, par site. Chaque catalogue a son propre pack de règles, ses propres synonymes, son propre index.
Endpoint indexation →Aucune recherche interne sur votre site aujourd'hui ? Ce script autonome (zéro dépendance) affiche une barre de recherche connectée à votre catalogue en trois lignes de configuration : saisie, résultats en direct, facettes, navigation clavier. Pas une obligation si vous préférez coder votre propre interface, mais un point de départ immédiat si vous partez de zéro.
Documentation et exemple →Connectez Heurix à Claude Desktop, Cursor, ou un agent interne : trois outils exposés nativement (recherche, Browse, statistiques catalogue). Un collaborateur demande « est-ce que j'ai des vis M8 en stock ? » en langage naturel, l'agent fait le pont vers votre API, sans qu'il ait jamais à l'appeler lui-même.
Guide d'installation →Une page de catégorie ou de rayon n'a pas de requête à traiter, juste des produits à bien classer. Un moteur distinct de la recherche, sur vos propres catégories.
Remplacez un tri statique par un classement qui tient compte du stock, du prix, de la marge, de la fraîcheur ou de la popularité réelle (clics et achats remontés par le tracker). La catégorie est un champ que vous fournissez à l'indexation — categories ou category — au même titre que le nom ou le stock, pas une notion que Heurix devine ou impose.
GET /v1/browse/moncatalogue/perceuses-visseuses?sort=price_asc
Endpoint Browse & Discovery →
Épinglez un produit en tête d'une catégorie pour une mise en avant ponctuelle, ou reléguez-en un discrètement en fin de liste, sans toucher au code ni désindexer. Le classement naturel reprend automatiquement sa place dès que la priorité est retirée.
Un moteur qui décide seul ne suffit pas : vous savez des choses qu'il ignore : une promotion, un déstockage, une marge. Épinglez un produit, le classement suit.
Cliquez l'épingle d'un produit pour le placer en tête de liste.
Champs pondérés (référence > nom > description), score composite incluant les annotations partagées, puis disponibilité en départage à score égal : un produit en rupture ne passe jamais devant un produit disponible équivalent.
Endpoint recherche →Quand plusieurs produits répondent également bien à une recherche, celui qui se vend vraiment prend l'avantage, pas un simple tri par pertinence texte. Jamais assez fort pour inverser un vrai écart : seulement pour départager une quasi-égalité. Un produit avec une correspondance exacte reste toujours devant, quelle que soit la popularité de l'autre. Nécessite le Tracker installé ; sans lui, le classement reste inchangé.
Comment ça marche →Chaque résultat inclut un champ matched qui liste pourquoi il sort : terme trouvé, faute corrigée, annotation partagée. C'est votre outil de diagnostic quand un résultat surprend.
"matched": ["annotation #VIS_M8X20", "terme 'inox'"]
Voir un exemple de réponse →
Repérez d'un coup d'œil pourquoi un résultat sort, directement dans votre interface : les positions exactes de chaque correspondance, par champ, pour entourer le fragment pertinent d'un simple <mark>. Reflète ce que cette recherche précise a déclenché, jamais toutes les caractéristiques du produit.
"highlights": {"name": [[0, 3], [13, 18]]}
Format détaillé →
Paramètres limit et offset standards, jusqu'à 100 résultats par page.
Un moteur qui se trompe sans expliquer est impossible à corriger. Heurix montre son raisonnement, terme par terme. Voici une vraie requête, avec ses fautes.
Boulon TF M8 x 50 inox A4 arrive en tête, et vous savez exactement pourquoi.
Jusqu'à 5 000 produits par appel, upsert automatique sur l'identifiant, création du catalogue à la volée dès le premier envoi.
Endpoint indexation →Règles de comptage publiques (1 recherche = 1 requête, indexation jamais décomptée), consommation consultable en temps réel via l'API. Jamais de coupure surprise en cas de dépassement.
Comment le comptage fonctionne →Moteur conçu et développé en France, hébergement OVH (Gravelines ou Strasbourg). Vos catalogues ne quittent pas l'Union européenne.
Notre histoire →Remontez vos clics et achats depuis votre site — Heurix Tracker (identifiant visiteur persistant), modèle de balise Google Tag Manager, ou snippet JavaScript direct — pour voir le taux de clic de vos recherches, le chiffre d'affaires et la marge qui en découlent, et vos produits les plus vendus — et, pour chacun, ce qui s'achète avec, par comptage réel des paniers. Avec le tracker installé, allez plus loin qu'une simple corrélation : un CA réellement attribué, compté seulement quand le même visiteur a cliqué depuis une recherche avant d'acheter.
Endpoint Conversion & ROI →
Deux visiteurs qui tapent la même recherche n'ont pas forcément la même intention. Un signal de comportement, explicable de bout en bout, jamais une boîte noire qu'on ne pourrait pas justifier.
Combine la précision de recherche d'un visiteur (une référence précise plutôt qu'un mot générique) et son taux de clic : les deux seuls signaux qui composent le score, jamais fondus en un chiffre qu'on ne pourrait pas expliquer à un client qui demanderait pourquoi. Le panier moyen est fourni à côté, pour le contexte, jamais mélangé dedans.
Endpoint Score d'intention →Répartissez tous vos visiteurs actifs en trois tranches d'intention, comparées à la période précédente. Des comptes agrégés, jamais une liste nominative : Heurix ne connaît un visiteur que par un identifiant pseudonyme, jamais un nom ni un email.
Endpoint Segmentation →Les résultats tiennent compte de ce que ce visiteur a déjà acheté ou consulté, sans devenir une boîte noire pour autant : le classement reste fondé sur les mêmes annotations que le reste du moteur, jamais un modèle opaque appris séparément. Jamais assez fort pour inverser un vrai écart de pertinence, seulement pour départager une quasi-égalité. Nécessite le Tracker installé ; sans lui, le classement reste inchangé.
Endpoint recherche →Essai gratuit 14 jours : jusqu'à 2 000 requêtes et 2 000 produits, sans carte bancaire.