Un moteur de recherche puissant pour une exploration efficace
Selon nous, dans un univers d’information très volumineux, comme c’est le cas d’un catalogue de données d’entreprise, la recherche n’est pas une fonction annexe mais le principal mécanisme par lequel les utilisateurs vont pouvoir exploiter le catalogue. Elle doit donc être simple, puissante, et surtout efficace – les résultats doivent satisfaire les utilisateurs. Google ou Amazon.com fixent en la matière la barre très haut, et l’expérience de recherche qu’ils proposent est devenue une sorte de référence dans le domaine.
Ils fixent le la de l’expérience de recherche, que l’on pourrait résumer de la sorte :
- Je saisis quelques mots clés dans la barre de recherche – souvent assisté par un système de suggestion me proposant des associations fréquentes de termes permettant de mieux qualifier ma recherche.
- La réponse, quasi instantanée, m’affiche les résultats dans un ordre précis, et je m’attends à trouver celui ou ceux qui m’intéressent sur la première page de résultats.
- À défaut, je vais soit ajouter un terme à ma recherche pour mieux la circonscrire, soit utiliser un système plus ou moins poussé de filtrage permettant d’éliminer les résultats non pertinents.
Or dans le monde du data catalog, en matière de capacités de recherche, les solutions du marché proposent au mieux un bon système d’indexation. Cette approche donne des résultats satisfaisants quand l’utilisateur a une idée précise de ce qu’il cherche (high intent search), mais est décevante pour ceux dont la démarche est plus exploratoire (low intent search) ou quand il s’agit de suggérer spontanément certains résultats pertinents à un utilisateur (no intent).
En somme, la simple indexation permet au mieux de retrouver les éléments dont on connaît les caractéristiques précises, mais n’est pas suffisante lorsque la recherche est plus évasive. Les résultats sont alors trop souvent pollués par de nombreux faux positifs, et l’ordre des résultats est surdéterminé par les correspondances exactes.
Une approche multidimensionnelle de la recherche
Nous avons décidé quant à nous, dès le départ, qu’un simple système d’indexation serait trop limitatif pour répondre de façon pertinente aux questions des utilisateurs. Nous avons donc pris le parti d’isoler le moteur de recherche dans un module dédié de la plateforme, et d’en faire une zone d’innovation (et d’investissement) forte.
Nous ne disposons bien sûr pas des moyens de Google, ni de sa connaissance en matière d’optimisation des résultats de recherche. Mais nous avons néanmoins intégré dans notre moteur de recherche plusieurs features qui permettent d’ores et déjà une très bonne pertinence, et qui sont en amélioration continue – tester et valider la performance d’un moteur de recherche est en soit une gageure.
Nous nous sommes donc naturellement intéressés aux travaux des fondateurs de Google sur leur algorithme Page Rank. Celui-ci prend en compte plusieurs dizaines d’aspects (appelées features), parmi lesquels on retrouve la densité des relations entre les différents objets du graphe (liens hypertextes dans le cas de pages Internet), le traitement linguistique des termes de la recherche ou encore l’analyse sémantique du knowledge graph.
Les principales features que nous avons intégré sont les suivantes :
- L’indexation classique, à plat, de tous les attributs d’un objet (son nom, sa description et toutes ses propriétés) avec une pondération en fonction du type de propriété.
- Une couche de NLP (Natural Language Processing) permettant de prendre en compte les approchants (fautes de frappe ou d’orthographe).
- Une couche d’analyse sémantique, reposant sur le traitement du knowledge graph.
- Une couche de personnalisation, reposant actuellement sur une classification simple des utilisateurs selon leurs cas d’usage, mais qui sera dans le future enrichie de données de profilage individuel.
Le smart filtering pour contextualiser et limiter les résultats de recherche
Pour compléter le moteur de recherche, nous proposons également un système de smart filtering. Il s’agit d’une capacité que l’on trouve fréquemment dans les sites e-commerce (typiquement Amazon.com ou Booking.com), et qui consiste à proposer des filtres contextualisés pour réduire le résultat d’une recherche.
Ces filtres fonctionnent de la façon suivante :
- Seules les propriétés qui permettent effectivement de réduire la liste des résultats sont proposées dans la liste des filtres – les propriétés non discriminantes n’apparaissent pas.
- Chaque filtre indique son impact – c’est-à-dire le nombre de résultats résiduels une fois le filtre appliqué.
- L’application d’un filtre rafraîchit instantanément la liste des résultats.
En combinant la recherche multidimensionnelle et le smart filtering, nous estimons aujourd’hui offrir une expérience de recherche véritablement smart. Et notre architecture découplée nous permet d’expérimenter de façon continue de nouvelles approches, tout en intégrant très rapidement celles qui nous semblent efficaces.