TYPO3 rencontre SEAL : un nouveau souffle pour la recherche

Auteurs : Tim Lochmüller
Traduit par : Célia - W-Seils

Lire l’article complet en version originale

Lorsque j'ai soumis la demande de budget pour le troisième trimestre 2025, l'un des aspects les plus intéressants de la proposition était l'intégration de la couche d'abstraction du moteur de recherche (SEAL) dans TYPO3. Mon intention était de relever les défis liés à la recherche et à l'indexation tout en créant une base pour la prochaine génération de recherche TYPO3, y compris des solutions sémantiques et basées sur l'IA.

Grâce à cette initiative, je peux désormais présenter trois résultats concrets :

Dissocier l'indexation de la recherche

Réfléchir à la recherche, c'est réfléchir à l'indexation. L'une des principales conclusions que j'ai tirées lors de l'intégration de SEAL est que l'indexation et la recherche ne doivent pas être considérées comme une seule et même chose. Historiquement, les extensions TYPO3 avaient tendance à regrouper les deux, mais de manière très différente. Par exemple, l'extension système TYPO3, Indexed Search, utilise un mécanisme de mise en cache ; l'extension Faceted Search (ke_search) parcourt la base de données TYPO3 ; et l'extension Apache Solr for TYPO3 - Enterprise Search (solr) effectue des requêtes HTTP frontales.

Chaque solution fonctionnait, mais l'écosystème dans son ensemble finissait par être fragmenté. Les développeurs devaient sans cesse réinventer la logique d'indexation pour chaque nouvelle extension. Et aujourd'hui, il existe d'autres cas d'utilisation que la simple recherche.

C'est pourquoi j'ai créé l'extension Index (index). Son objectif est de fournir un framework d'indexation central dans TYPO3. Grâce à elle, différentes stratégies d'indexation peuvent être gérées en un seul endroit sans avoir à les intégrer directement dans les extensions de recherche ou d'IA. Les données indexées peuvent ensuite être utilisées via PSR-Events, ce qui donne aux autres extensions un point d'entrée cohérent.

D'un point de vue technique, tout fonctionne via TYPO3/Symfony Messenger, ce qui rend le système à la fois robuste et évolutif. À l'heure actuelle, l'extension Index prend en charge ces différentes stratégies d'indexation (configurables par page) :

Un choix de conception essentiel a été de ne pas ajouter de couche de persistance à l'extension Index. Elle se contente d'émettre des informations via des événements et ne stocke rien elle-même. Cela permet de conserver la légèreté de l'extension et garantit qu'elle peut servir de base à toutes les couches de persistance qui pourraient être ajoutées par-dessus.

Si vous êtes intéressé, vous pouvez consulter le référentiel d'extensions TYPO3.

Intégration de SEAL dans TYPO3

L'étape suivante a été la publication de l'extension Search Engine Abstraction Layer (seal), qui intègre la couche d'abstraction du moteur de recherche dans TYPO3. Cette extension comporte deux composants principaux :

  • Un plugin pour l'affichage des résultats de recherche dans TYPO3.
  • Un adaptateur TYPO3, qui stocke les résultats dans la base de données TYPO3 à l'aide d'un index FULLTEXT.

Par défaut, la base de données TYPO3 elle-même sert d'adaptateur, ce qui signifie que dès que l'extension Seal est installée, une solution de recherche fonctionnelle est déjà en place. Aucun adaptateur supplémentaire n'est nécessaire pour commencer.

Ce qui rend cette extension particulièrement puissante, c'est la façon dont elle s'appuie sur l'extension Index. L'indexation est gérée de manière centralisée et la couche de persistance est fournie par SEAL via ses adaptateurs. Grâce à cette architecture, les projets peuvent démarrer à petite échelle en utilisant l'index de base de données FULLTEXT intégré à TYPO3, puis passer à un adaptateur plus avancé ou spécialisé lorsque cela est nécessaire.

Si vous souhaitez découvrir son fonctionnement, vous pouvez la trouver dans le référentiel d'extensions TYPO3.

Preuve de concept pour la recherche alimentée par l'IA

Enfin, j'ai également publié une preuve de concept : l'extension SEAL Search AI (seal_ai).

Cette extension s'intègre à Symfony AI Platform et Store et introduit un adaptateur SEAL qui vectorise les données indexées. En pratique, cela signifie qu'elle transforme le contenu via des intégrations, permettant ainsi une recherche sémantique basée sur l'intégration. (Remarque importante : il n'existe pas encore de version officielle de Symfony AI, et les paquets évoluent actuellement très rapidement).

Cette approche est particulièrement intéressante car elle résout les problèmes auxquels se heurtent les moteurs de recherche traditionnels par mots-clés. En tirant parti des intégrations, le moteur de recherche comprend le sens plutôt que les mots. Par exemple, une requête pour « voiture » trouvera également des résultats contenant « automobile ».

À ce stade, l'extension SEAL Search AI n'est encore qu'une preuve de concept. Mais elle démontre déjà comment TYPO3 peut exploiter les approches basées sur l'IA, ouvrant la voie à des expériences de recherche puissantes et sensibles au contexte.

Si vous souhaitez l'essayer vous-même, l'extension est disponible dans le répertoire des extensions TYPO3.

Conclusion — une nouvelle approche de la recherche

Ensemble, ces trois extensions marquent un changement dans ma façon d'envisager la recherche dans TYPO3. Cette approche modulaire offre de réels avantages : flexibilité, évolutivité et forte innovation.

Pour moi, le plus grand bénéfice de cette aventure a été la réalisation de la séparation conceptuelle. En dissociant le processus d'indexation et en abstraisant la couche de persistance, TYPO3 dispose désormais d'une nouvelle approche pour gérer les technologies futures.

La validation du concept avec l'extension SEAL Search AI n'est qu'un début. Il reste encore de nombreuses questions ouvertes, des idées à affiner et des expériences à tenter. Mais je pense qu'il s'agit d'un pas en avant prometteur, et j'ai hâte de connaître les réactions de la communauté TYPO3.

Do you want to publish
a guest blog post?

 

Contact us

Do you want to publish
your own case study?

 

Get in touch