La recherche Typesense avec Sylius
Dans une application e-commerce basée sur Sylius, l’implémentation d’un moteur de recherche rapide et pertinent est essentielle pour offrir une expérience utilisateur optimale. Si vous souhaitez améliorer la recherche de produits et rendre vos résultats plus précis et rapides, alors Typesense est une solution idéale. Dans cet article, nous allons découvrir comment intégrer Typesense à l’aide du plugin acseo/sylius-typesense.
Pourquoi Utiliser Typesense ?
Lorsque l’on parle de recherche de produits, l’objectif est de permettre aux utilisateurs de trouver ce qu’ils cherchent de manière rapide et pertinente, même avec des fautes de frappe ou des requêtes approximatives. Typesense est un moteur de recherche open-source qui répond à ces besoins en offrant :
- Des recherches très rapides, même avec un grand nombre de produits
- La gestion des fautes d’orthographe (recherche floue)
- Un support pour les recherches par facettes (faceting) et la pondération des résultats
- Une interface simple pour les développeurs, permettant une intégration facile dans des projets Symfony comme Sylius.
Utiliser Typesense avec Sylius
Typesense est une alternative légère et performante à des solutions comme Elasticsearch, souvent complexes à configurer et consommatrices de ressources. Le plugin acseo/sylius-typesense permet une intégration fluide de Typesense et améliore considérablement la recherche de produits.

Que propose le Plugin acseo/sylius-typesense
acseo/sylius-typesense
- Définition des données à indexer par paramétrage
- Commandes de création et d’indexation des données de Doctrine vers Typesense
- Listener Doctrine pour maintenir les données de Typesense à jour
- Services de recherche des données dans Typesense
- Récupération des résultats de recherche bruts ou sous la forme d’Objets Doctrines hydratés
Mettre en place et utiliser le Plugin (en 5 minutes chrono)
⚠️ Les informations ci-dessous sont tirées de la documentation officielle du Plugin, n’hésitez pas à y jeter un oeil pour être parfaitement à jour.
Installation et configuration de SyliusTypesense
Suivez ces étapes pour intégrer le plugin SyliusTypesense dans votre projet.
Étape 1 : Installation du package
Installez le plugin via composer :
composer require acseo/sylius-typesense
Étape 2 : Enregistrement du Plugin
Après installation, activez le plugin en ajoutant les lignes suivantes dans le fichier config/bundles.php
:
return [
ACSEO\TypesenseBundle\ACSEOTypesenseBundle::class => ['all' => true],
ACSEO\SyliusTypesense\ACSEOSyliusTypesense::class => ['all' => true],
];
Étape 3 : Importer la configuration requise
Ajoutez la configuration du plugin dans votre fichier config/packages/_sylius.yaml
:
# config/packages/_sylius.yaml
imports: - { resource: "@ACSEOSyliusTypesense/Resources/config/services.yaml" }
Étape 4 : Configuration des routes
Importez les routes dans le fichier config/routes.yaml
:
imports:
- { resource: "@ACSEOSyliusTypesense/Resources/config/services.yaml" }
Étape 5 : Configurer Typesense avec docker
Ajoutez le service Typesense dans votre fichier docker-compose.yaml
:
services:
typesense:
image: typesense/typesense:27.1
restart: on-failure
ports:
- "8108:8108"
volumes:
- ./typesense-data:/data
command: '--data-dir /data --api-key=xyz --enable-cors'
Configuration du plugin
Étape 1 : Variables d’environnement
Ajoutez les variables suivantes dans votre fichier .env
:
TYPESENSE_URL=http://localhost:8108
TYPESENSE_KEY=xyz
PRODUCT_SEARCH_LIMIT=9
Étape 2 : Configuration principale
Créez un fichier config/packages/acseo_typesense.yaml
et ajoutez :
acseo_typesense:
typesense:
url: 'http://localhost:8108'
key: 'xyz'
collection_prefix: 'test_'
collections:
products:
entity: 'App\Entity\Product\Product'
fields:
id:
name: id
type: primary
sortable_id:
entity_attribute: id
name: sortable_id
type: int32
code:
name: code
type: string
infix: true
translations:
name: translations
type: collection
infix: true
taxons:
name: taxons
type: collection
infix: true
embedding:
name: embedding
type: float[]
embed:
from:
- translations
- taxons
- code
model_config:
model_name: ts/e5-small
default_sorting_field: sortable_id
symbols_to_index: [ '+' ]
Vous pouvez personnaliser les champs et les types pour correspondre à vos besoins.
Étape 3 : Ajouter les templates
Copiez les templates du plugin dans votre répertoire de projet avec la commande suivante :
cp -R vendor/acseo/sylius-typesense/src/Resources/views/bundles/ templates/bundles/
Utilisation du plugin
Créer un index et importer des données
Le plugin fournit des commandes pour créer et indexer vos données.
Créer la structure de collection
php bin/console typesense:create
Importer les collections depuis vos entités doctrine
php bin/console typesense:import
Le plugin acseo/sylius-typesense simplifie l’intégration de Typesense avec Sylius, offrant une recherche rapide, tolérante aux fautes et puissante pour vos utilisateurs. Suivez ces étapes pour configurer et utiliser ce plugin, et offrez une expérience de recherche optimisée à vos clients.
Dans la même logique, nous avons aussi travaillé sur un outil qui permet la recherche Typesense avec Symfony. Vous pouvez consulter l’article en cliquant ici.
Si vous cherchez une agence experte Sylius, n’hésitez pas à nous contacter ! ACSEO est partenaire certifié premium Sylius depuis 2022.