Alternatives à Algolia pour un catalogue technique : ce que chaque moteur fait de M8x30
Pour un catalogue de visserie, la vitesse et le prix départagent peu. Ce qui départage, c'est ce qu'un moteur fait de « M8x30 », « M8 x 30 » ou « DIN-933 ». Voici ce qu'en disent les documentations d'Algolia, Typesense, Meilisearch, Elasticsearch, Doofinder, Sensefuel et des plateformes, et ce que notre propre moteur rate.
La question posée à chaque moteur
Une vis M8 de 30 mm, norme DIN 933, arrive dans un catalogue sous plusieurs écritures, et l'acheteur en tape encore d'autres :
| Écriture | Ce qui change |
|---|---|
M8x30 | La forme compacte |
M8 x 30 | Des espaces |
M8-30 | Un tiret à la place du « x » |
DIN 933, DIN933, DIN-933 | La norme, avec ou sans séparateur |
Un moteur doit faire deux choses de ces écritures : les rapprocher, et classer la bonne dimension devant la mauvaise. Une M8x300 contient les mêmes caractères qu'une M8x30, et ce n'est pas la même vis.
Ce que nous avons lu, et ce que nous n'avons pas fait
Pour chaque concurrent, nous avons lu sa documentation publique le 16 septembre 2026, et chaque affirmation ci-dessous renvoie à sa page. Nous n'avons essayé aucun de ces produits. Quand une documentation ne dit rien d'un cas, nous l'écrivons plutôt que de deviner. Heurix, lui, est mesuré, et ce qu'il rate figure plus bas.
Algolia
D'après sa documentation sur le découpage, lettres et chiffres forment un même bloc et le tiret est un séparateur. Selon cette règle, « M8x30 » reste un seul mot, et une requête à tiret exige que ses morceaux se suivent dans le bon ordre. Algolia sait aussi coller deux mots tapés séparément ou couper un mot en deux, avec une exception qui touche les références : un morceau qui commence par un chiffre n'est pas collé à ses voisins. Ce que devient « DIN 933 » face à « DIN933 », cette page ne le dit pas, et nous ne l'avons pas essayé.
Pour les codes à tiret, son guide recommande d'enregistrer dans chaque fiche la liste des écritures de la référence, avec et sans espaces. Ses règles reconnaissent des mots écrits tels quels ou n'importe quelle valeur d'une facette déclarée. On peut donc viser toutes les valeurs d'un champ « diamètre » ; la page ne propose pas d'écrire un motif comme « M suivi d'un nombre ».
Typesense
Sa documentation indique que Typesense retire par défaut les caractères spéciaux, à l'indexation comme à la recherche : dans son exemple, une référence à points devient une seule chaîne collée. On peut déclarer ces caractères comme séparateurs, champ par champ. Le paramètre split_join_tokens traite l'espace comme une faute et essaie la forme collée ou séparée, mais seulement quand la requête d'origine ne rend rien. La même page active par défaut la tolérance aux fautes sur les mots qui mêlent lettres et chiffres.
Ses règles de curation savent filtrer sur une valeur de facette trouvée dans la requête. Comme chez Algolia, la reconnaissance porte sur des valeurs déclarées, pas sur un motif.
Meilisearch
Dans le code de son découpeur, le tiret figure parmi les séparateurs par défaut. Sa documentation décrit une concaténation : jusqu'à trois mots consécutifs de la requête sont aussi essayés collés, et chaque forme collée compte comme une faute dans le classement. Selon cette règle, « DIN 933 » peut retrouver « DIN933 », derrière une correspondance exacte ; c'est ce que la page décrit, pas ce que nous avons mesuré.
Ses règles de recherche ne prennent en charge, d'après leur propre page, ni expression régulière ni motif numérique.
Elasticsearch
Elasticsearch fournit des briques plutôt qu'un comportement. Son découpeur standard suit l'algorithme de segmentation Unicode. Le filtre word_delimiter_graph coupe par défaut à la frontière entre lettres et chiffres, comme dans leur exemple où « j2se » donne trois morceaux ; ses options de recollage produisent des jetons que l'indexation ne prend pas en charge sans précaution, dit la même page. Pour un code exact, un normalizer n'émet qu'un seul jeton. Tout est possible à condition de l'assembler : nous en avons fait l'inventaire dans un article dédié.
Doofinder et Sensefuel
Doofinder indexe par défaut les identifiants d'un produit, dont le SKU, la référence et le GTIN, et propose des champs qui cherchent sur des parties d'un numéro de référence. Ses résultats personnalisés ajoutent ou retirent des produits pour des termes donnés. Ce que ces champs font d'un tiret ou d'un espace dans un code, nous ne l'avons pas trouvé dans sa documentation.
Sensefuel présente une recherche qui comprend la sémantique et tolère les fautes. Nous n'avons trouvé aucune page publique sur le traitement des codes produit, et son centre d'aide ne s'est pas ouvert à notre lecture. Nous n'en disons donc rien.
Les moteurs natifs des plateformes
- Shopify : le SKU est cherché, et une partie de code n'est trouvée que si le code contient des tirets (documentation).
- PrestaShop : la configuration livrée fixe la longueur minimale d'un mot à 3 caractères, et le code de la recherche ignore les mots plus courts. « M8 » tapé seul n'y compte pas.
- WooCommerce : le code de la recherche de la boutique (version 11.1.0) compare les mots au titre, à l'extrait et au contenu ; le SKU n'en fait pas partie.
- Adobe Commerce (Magento) : la documentation indique qu'une recherche sur la fin d'un SKU n'est pas prise en charge d'origine.
Le détail de ce que ces moteurs font par défaut : pourquoi le moteur natif de votre plateforme ne suffit pas.
Heurix : la reconnaissance, pas la normalisation
Heurix ne rapproche pas ces écritures en nettoyant le texte. Sa normalisation ne met en commun que la casse : « din-933 », « din 933 » et « din933 » restent trois découpages différents. Ce sont des règles écrites en expressions régulières, regroupées par secteur, qui lisent chaque écriture et produisent la même étiquette. Sortie du moteur en production, secteur outillage :
M8x30 → DIAM_M8, LONG_30, VIS_M8X30 M8 x 30 → DIAM_M8, LONG_30, VIS_M8X30 M8-30 → DIAM_M8, LONG_30, VIS_M8X30 DIN-933 → NORME_DIN933 DIN 933 → NORME_DIN933 din933 → NORME_DIN933
Les mêmes règles lisent les fiches et les requêtes. C'est ce qui classe la bonne dimension devant la mauvaise : sur notre banc, la requête « M8x30 » place les cinq vis M8x30, quelle que soit leur écriture, devant la M8x300, la M8x35 et la M10x30. L'écriture pèse encore : la même vis obtient 36 ou 22,5 selon que sa fiche dit « M8x30 » ou « M8 X 30 ».
Ce que Heurix rate, mesuré
Banc du 16 septembre 2026 sur le moteur en production (cbfc93d) : un catalogue de test de 12 vis avec le secteur outillage, un de 5 roulements avec le secteur industrie, résultats identiques sur deux exécutions. Un banc de cette taille dit si un cas marche, pas à quelle fréquence il se présente chez vous.
| Requête | Ce que le moteur rend |
|---|---|
ISO 4017 | Aucune des 6 vis DIN 933. Le moteur ne connaît pas de correspondance entre normes : il ne rapproche que les écritures d'une même norme. |
8x30 | Sans le « M », la vis M10x30 obtient le même score que deux vis M8x30 écrites autrement. |
M8 30 | Sans le « x », trois vis M8x30 obtiennent le même score que la M8x300 et la M8x35. |
DIN93 | Une référence incomplète : 1 vis DIN 933 sur 6. |
6205-2RS | Le roulement 6206-2RS, d'une autre taille, passe devant le 6205-ZZ, de la bonne taille avec une autre étanchéité. |
62052RS | Écrite sans séparateur, la référence ne retrouve que la fiche écrite pareil. |
Et les roulements ne sont reconnus que si le catalogue utilise le secteur industrie : le secteur outillage ne lit pas « 6205-2RS ».
Quand choisir un autre moteur
- Vos clients cherchent par mots, pas par codes. Le critère de cet article pèse alors peu, et la comparaison se joue ailleurs.
- Vous voulez héberger le moteur vous-même. Typesense documente l'auto-hébergement ; Heurix est une API, hébergée en France chez OVH.
- Le merchandising visuel passe avant la référence. Doofinder documente ses résultats personnalisés, Sensefuel met en avant bannières et produits promus.
Comment trancher
Prenez une référence de votre catalogue et tapez-la dans votre moteur actuel sous toutes les écritures du tableau du début, puis sous une forme incomplète. Comptez les résultats, et regardez si la bonne dimension sort la première. Faites ensuite le même test sur Heurix, gratuitement pendant 14 jours : vous verrez aussi ce qu'il rate chez vous.
Sur les références elles-mêmes : configurer la recherche par référence sur un e-commerce B2B.
Sources
Documentations lues le 16 septembre 2026. Algolia : découpage, collage et coupure, codes à tiret, règles. Typesense : données courantes, paramètres de recherche, curation, installation. Meilisearch : code du découpeur, tolérance aux fautes, règles de recherche. Elasticsearch : découpeur standard, word_delimiter_graph, normalizers. Doofinder : indexation, champs de recherche, résultats personnalisés. Sensefuel : page de recherche. Shopify : comportement de la recherche. PrestaShop 9.1.5 : configuration livrée et Search.php. WooCommerce 11.1.0 : class-wc-query.php. Adobe Commerce : résultats de recherche. Chaque page est liée à l'endroit où elle est citée.
Réécrit le 16 septembre 2026. La version de juillet affirmait que ces moteurs obligent à écrire les règles « une par une, référence par référence », sans source : leurs documentations montrent qu'ils rapprochent déjà une partie des écritures sans règle. Elle comparait aussi des prix sans source, et ne disait rien de ce que notre moteur rate.