Azure Search

Qu’est-ce qu’Azure Search ?

Microsoft Azure Search est une solution cloud de Search-as-a-service offrant l’opportunité aux développeurs d’ajouter simplement des fonctionnalités de recherche à leurs applications web, mobile ou applications métier internes à l’entreprise.

 

Outre la fonctionnalité de recherche de contenu, Azure Search propose notamment des fonctionnalités de filtre, de navigation par facettes, de synonyme, d’autocomplétion, de recherche géo-localisée ou encore de notation des résultats de recherche par pertinence.

Il faut cependant noter que les droits d’accès aux éléments indexés ne sont pas nativement indexés avec le contenu, de sorte qu’il est nécessaire d’implémenter par développement cette fonctionnalité, ou de considérer que l’ensemble des résultats de recherche sont accessibles à l’identique pour tous les utilisateurs d’un index Azure Search.

Ce service s’appuie sur la construction d’un index dont les sources de données peuvent être de différents types et être importées nativement de différentes origines :

  • Azure SQL Database
  • SQL Server relational data on an Azure VM
  • Azure Cosmos DB
  • Azure Blob storage
  • Azure Table storage

Il est également possible d’envoyer les données vers le service Azure Search afin de peupler un index, plutôt que les importer depuis les sources citées ci-dessus.

L’ensemble des interactions d’une application avec le service Azure Search se fait via l’utilisation d’API REST ou du SDK .NET.
Certaines fonctionnalités d’administration sont également disponibles via le portail Azure afin, par exemple, de définir ou de requêter un index.

L’infrastructure du service étant gérée par Microsoft et hébergée sur Azure, elle offre une disponibilité de 99.9%, et peut s’adapter pour accueillir plus ou moins d’éléments dans un index, ou supporter une charge utilisateur plus importante, ou les deux.

 

Cas clients :

 

Expertime a eu l’occasion de mettre en place, avec succès, plusieurs applications utilisant Azure Search au cours des derniers mois.

Dans le cadre d’un de ces projets, il s’agissait de remplacer un moteur de merchandising dédié e-commerce, et de simplifier la solution existante par l’utilisation d’un service de recherche clé en main tel qu’Azure Search.

L’index mis en place dans le cadre de ce projet ne contient que les métadonnées strictement nécessaires à l’interface utilisateur de recherche au sein de l’application, afin d’identifier un produit au sein d’un catalogue en contenant plus de 50 millions.
Une fois le produit identifié via le service Azure Search, l’application s’appuyant par ailleurs sur une base de données SQL, l’ensemble des caractéristiques du produit sont ensuite récupérées depuis cette base.

Dans le cadre d’un autre projet, il s’agissait de collecter les données de nombreuses sources de données, afin de constituer une base de connaissance unique permettant aux utilisateurs d’accéder à l’ensemble des documents et contenus éditoriaux de l’entreprise via une seule URL.

Dans le cadre de cette application, Azure Search s’est retrouvé au cœur du système, si bien que le développement de l’application a consisté principalement à l’alimentation et à l’interrogation de l’index via une interface web dédiée.
Ainsi, l’alimentation de l’index a dû être réalisée par le biais de connecteurs développés en .Net Core, afin de récupérer des données de différentes sources, non gérées nativement par Azure Search :

  • Partage de fichiers
  • SharePoint
  • Site internet public

Voici un schéma simplifié de cette architecture applicative :

Azure Search

L’interface, développée en Angular 6 permet d’interroger l’index, de filtrer les résultats selon les métadonnées de chaque document, de noter chaque document (note de 1 à 5) afin de mettre en avant certains contenus, ou de déprécier des contenus devenus obsolètes ou faux, avec le temps.

Une notion de profil utilisateur permet également à chaque utilisateur d’enregistrer ses recherches favorites, et d’être alerté si de nouveaux documents correspondant aux recherches enregistrées venaient à être ajoutés.

Quelques chiffres :

  • 100 sources de données différentes
  • 1 million de documents indexés
  • 3 à 4 To de données

 

Retours d’expérience

 

D’un point de vue utilisateur, l’expérience que propose le service Azure Search est similaire à ce que l’on peut trouver sur d’autres moteurs de recherche tels que Bing, Google, etc …
Bien que cela puisse paraître non novateur, et quelque peu réducteur, c’est en réalité un atout majeur, puisque ces outils sont utilisés quotidiennement par des millions d’utilisateurs à travers le monde, et sont très largement adoptés d’un point de vue fonctionnel et ergonomique.

Azure Search propose donc de nombreuses fonctionnalités connues et attendues des utilisateurs, tout en offrant une souplesse d’interfaçage avec de nombreuses sources de données, aussi bien nativement, que via développement, ne laissant de limite d’implémentation de ce service qu’à l’imagination.

Comment faire ?

D’un point de vue technique et développement, l’interrogation du service tant pour construire l’index, que pour l’interroger et en récupérer des documents se fait aisément. Il est ainsi possible en quelques minutes (pour peu que l’on possède un abonnement Azure), grâce aux documentations et tutoriels mis à disposition par l’éditeur, d’implémenter ses premiers appels au service Azure Search et d’en comprendre le fonctionnement global.

Ces implémentations peuvent être réalisées en :

Il est également possible d’appeler les API REST du service via javascript. Attention toutefois aux appels POST en crossdomain qui ne sont pas autorisés ; seuls les appels GET le sont.

 

Aller plus loin avec l’IA

 

La fonctionnalité de recherche cognitive d’Azure Search (actuellement en preview) permet d’extraire des informations structurées directement depuis vos documents, permettant ainsi de caractériser et de classifier automatiquement vos documents. Cette fonctionnalité peut s’interfacer avec les sources de données nativement indexées par Azure Search.

Cependant, Expertime met également à disposition cette fonctionnalité au travers de la suite logicielle WhatDoTheyThink. Elle permet d’enrichir l’information quel que soit le type de source de données : partages de fichiers, sites SharePoint, sites Internet, communautés Yammer ou toute autre source de données qui ne serait pas supportée nativement par Azure Search.

N’hésitez pas à nous solliciter sur le sujet !

 

Ecrit par Fabien Camier