4 octobre 2018 Technique

Indexation, codage et recherches : Elastic Site Search et Elastic App Search

Par Kellen Evan

Elastic propose des services de recherche auto-gérés, efficaces et extrêmement utiles. Cet article s'intéresse à deux de ces services : Elastic Site Search et Elastic App Search. Ces deux services partagent un même objectif : fournir des outils qui permettent de créer et de configurer des expériences de recherche pertinentes et utiles et nécessitant un temps de mise en œuvre minime. Bien que similaires, les services se distinguent par la méthode utilisée pour atteindre cet objectif.

Après avoir lu cet article, vous serez en mesure d'identifier la solution qui vous convient.

Le défi : la recherche profonde

Elastic Site Search et Elastic App Search utilisent tous deux Elasticsearch, un moteur de recherche RESTful, distribué, open source. Et ils en ont grandement besoin ! La recherche représente un problème de taille. Elasticsearch est un outil testé et éprouvé qui peut aider à corriger les problématiques les plus complexes.

Les problématiques de recherche peuvent être classées dans trois grandes catégories :

Ingestion. Vous avez des données. Vous voulez faire en sorte de pouvoir effectuer des recherches sur ces données. Le processus d'ingestion consiste à transformer un objet (une page Web, une réponse d'une API back-end) en document pouvant faire l'objet d'une recherche. Il s'agit du processus d'indexation : traduire des données dans un format optimal qui peut être traité par un moteur de recherche. Comment indexer vos données ? Hébergerez-vous l'infrastructure ? Que faire si les données sont sur l'Internet public ? Et si elles se trouvent sur un réseau intranet privé ?  

Ingestion simplifiée, flexibilité et surcharge minime liée au développement : voilà ce que vous recherchez.

Livraison des résultats. Votre moteur est rempli de documents qui peuvent tous faire l'objet d'une recherche. Quel résultat obtenez-vous en retour ? Les documents, bien évidemment, mais quels documents ? Combien ? Et à quoi ressemblent-ils ? Quelle expérience offriront-ils ? Qu'en est-il de la saisie automatique ? Allez-vous créer une expérience prédictive, qui anticipe les actions des utilisateurs ? Les résultats généreront-ils de la valeur ?

Vous voulez des résultats pertinents qui vous aident à concrétiser vos objectifs opérationnels, à améliorer le RSI et à offrir une expérience agréable aux utilisateurs.

Gestion. Après avoir conçu et développé une expérience de recherche, comment la gérerez-vous ? Il a fallu du temps au développeur pour la créer. Imaginez le temps nécessaire pour l'ajuster et l'améliorer. Les collaborateurs moins techniques peuvent-ils participer à l'optimisation continue ? Comment gérerez-vous les accès ? Recueillerez-vous des données analytiques et intégrerez-vous la recherche dans votre pipeline d'analyse ?

Vous voulez une recherche fonctionnelle dès aujourd'hui, utile et pratique pour tous les collaborateurs, qui peut être améliorée et modifiée avec un minimum de friction.

Deux solutions efficaces, mais différentes

Elastic App Search et Elastic Site Search peuvent répondre à des exigences de recherche profonde, pour une multitude de cas d'utilisation différents. Plateforme de commerce électronique, base de connaissances, société de médias, application de jeu, offre SaaS, plateforme mixte et bien d'autres… Quel que soit votre statut, ces deux solutions offrent une expérience de recherche de grande qualité.

Ces deux solutions sont entièrement gérées, bien documentées et proposent un accès à un support technique de premier plan. De plus, elles offrent les avantages suivants :

  • Pertinence de premier plan et réglage précis de la pertinence, grâce aux synonymes, pondérations, classements des résultats, etc.
  • Moteurs optimisés selon la langue afin d'améliorer la pertinence de la recherche dans 14 langues différentes.
  • Analyses profondes pour obtenir des informations précieuses concernant le processus de recherche des utilisateurs, ce qu'ils trouvent et ce qu'ils ne trouvent pas.
  • Indexation basée sur API et API de recherche profonde, avec paramètres de la requête (par exemple, recherche à facettes, filtrage, triage et boosting).

Comment choisir ? En réalité, c'est assez simple. Tout dépend de la manière dont vous souhaitez corriger les problèmes d'ingestion, de livraison des résultats et de gestion.

Vous voulez que vos pages Web soient automatiquement scannées et indexées et vous souhaitez utiliser des plug-ins ou des solutions prêts à l'emploi, bénéficier d'un tableau de bord fonctionnel et clair et appliquer des points de terminaison d'API de soutien ? Elastic Site Search est la solution qu'il vous faut.

Vous souhaitez incorporer les points de terminaison d'API de fonctionnalité et de recherche les plus profonds et les plus variés dans le code de votre application et régler précisément la pertinence, grâce à un tableau de bord moderne et accessible ? Elastic App Search est fait pour vous.

Elastic Site Search : le robot qu'il vous faut

Le robot d'indexation (Site Search Crawler) est au cœur des opérations d'Elastic Site Search et il fonctionne comme n'importe quel autre robot d'indexation. Google, DuckDuckGo, Bing… Tous les grands moteurs de recherche déploient un robot, un système sophistiqué, sur toutes les pages Web publiques. Les robots scannent et indexent ces pages Web, en recueillant des indicateurs, en capturant du contenu et en créant des documents, en même temps.

Site Search Crawler est hébergé et géré par Elastic. Il s'occupe de l'ingestion. Il est automatisé, répond intelligemment aux erreurs et ne nécessite aucune configuration continue. Ajoutez un domaine, choisissez de traiter ou non vos balises META, le fichier Robots.txt, les flux RSS/Atom ou le plan du site, puis laissez faire. Vos pages sont alors traduites en documents indexés, pouvant faire l'objet d'une recherche.

Prenons l'exemple d'une grosse base de connaissance publique, contenant des articles utiles. Lorsque vous saisissez l'adresse de votre site Web, Site Search Crawler analyse et indexe chaque page Web. Une fois indexées, vos pages sont organisées en champs, en fonction d'un schéma. Dès lors, les capacités de réglage précis de la pertinence d'une fonction, telles que la pondération, peuvent être appliquées.

Vous pouvez sélectionner un ensemble de champs spécifiques et paramétrer précisément la "pondération" de chaque champ. Par exemple, que faire si nous voulons associer les recherches des utilisateurs et le titre d'un document, sans que le corps du texte influence les résultats ? Et si vous souhaitez privilégier des résultats plus populaires, qui ont reçu plus de clics ?


Il faut alors sélectionner les champs de titre, corps et popularité, puis ajuster la pondération, sur une échelle de 1 à 10.

L'ingestion automatisée et les fonctions design sont séduisantes. Mais qu'en est-il de la création d'une expérience de recherche ? Comment Elastic Site Search peut-il m'aider à intégrer la fonction d'indexation puissante et le contrôle précis de la pertinence dans mon site Web ? Les options de design et personnalisation proposées par Elastic Site Search incluent aussi bien des solutions prêtes à l'emploi que des expériences de recherche dynamiques et personnalisables.

En installant l'extrait JavaScript Site Search et en créant un nouveau champ de recherche ou en modifiant le champ existant, vous pouvez utiliser la superposition Site Search prête à l'emploi et configurable pour afficher les résultats de la recherche.

Et pour les designs personnalisés ? Elastic Site Search contient un ensemble d'API à ces fins. Des clients internes prennent en charge Java, Node.js, Python et Ruby. Nous proposons des bibliothèques JavaScript populaires, ainsi que la saisie automatique, que vous pouvez utiliser comme point de départ pour créer des expériences personnalisées inventives :

C'est lorsque le robot peut effectuer les tâches les plus complexes qu'Elastic Site Search est le plus efficace. Le temps de mise en route est court, il peut être configuré selon vos préférences et il assure la mise à jour des résultats. Les plug-ins et API Elastic Site Search sont particulièrement utiles pour les compléments. Cependant, certaines fonctions sont uniquement disponibles dans le tableau de bord et n'ont pas de point de terminaison API correspondant.

Pour le contrôle programmatique intégral des points de terminaison API plus profonds, nous vous recommandons Elastic App Search.

Elastic App Search : centré sur l'API et ergonomique

Elastic App Search est axé sur les API. Des clients internes prennent en charge Ruby, JavaScript, Java, Node.js et Python. Elastic App Search n'utilise pas de robot.

Le développeur qui utilise les API Elastic App Search détermine comment générer les données d'objet qui seront indexées et comment les différents points de terminaison d'API seront appliqués. L'ingestion, la livraison des résultats et l'implémentation globale sont traitées par programmes. Que vous créiez une recherche dans un tableau de bord engageant, une application mobile ou Web complexe, un jeu ou une boutique, si vous pouvez le programmer, vous pouvez faire en sorte de pouvoir rechercher les objets.

Toutes les fonctionnalités du tableau de bord sont traduites dans des API précises et robustes, que vous pouvez écrire dans votre code d'application. Par exemple, Elastic Site Search et Elastic App Search permettent tous deux de créer un ensemble de synonymes. Les ensembles de synonymes sont particulièrement utiles. En effet, les chercheurs utilisent souvent un vocabulaire très différent. Une "voiture" pour une personne peut être un "véhicule" pour une autre, ou encore une "auto", une "bagnole" et bien d'autres.

Dans Elastic Site Search, vous pouvez appliquer des synonymes grâce au tableau de bord :

Vous pouvez procéder de la même manière dans le tableau de bord d'Elastic App Search…

… ou vous pouvez effectuer une requête en fonction d'un point de terminaison d'API bien documenté :

curl -X POST 'https://host-xxxxxx.api.swiftype.com/api/as/v1/engines/rent-a-car/synonyms' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxxxxxx' \
-d '{
  "synonyms": ["car", "vehicle", "jalopy"]
}'

Les API d'Elastic App Search agissent bien plus en profondeur. Examinons, par exemple, comment un utilisateur qui crée une plateforme de commerce électronique peut consommer Analytics API Suite. La recherche commence par une expression libre. Les informations analytiques obtenues peuvent alors être profondes. La suite Analytics peut renvoyer des informations concernant les requêtes des utilisateurs et révéler les documents qui ont reçu des clics sur une période de temps ajustable.

curl -X POST 'https://host-2376rb.api.swiftype.com/api/as/v1/engines/sample-engine/analytics/queries' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxxxxxxxxxx' \
-d '{
  "filters": {
    "date": {
      "from": "2018-06-15T12:00:00+00:00",
      "to": "2018-06-19T00:00:00+00:00"
    }
  }
}'

Par exemple, imaginons qu'un article vendu dans votre magasin devienne un succès instantané, du jour au lendemain. Les recherches et les clics pour un document augmentent alors de manière soudaine et frénétique. Il s'agit d'une opportunité commerciale importante. Que faire ?

Vous pouvez écrire une fonction qui consomme les API Analytics de manière à capturer les documents les plus populaires trouvés grâce à la recherche. Vous pouvez alors étendre cette fonction de manière à publier automatiquement ces documents, dans un volet proéminent et voyant, sur votre page d'accueil. La recherche des utilisateurs révèle la demande et les fonctions automatisées optimisent le processus en fonction de celle-ci, en temps réel. Bien que les données analytiques soient profondes et utiles, les capacités de recherche sont le point fort d'Elastic App Search.

Les champs de schéma dans un document peuvent être associés à l'une des quatre valeurs suivantes : texte, chiffre, date et géolocalisation. Elastic App Search offre une fonctionnalité profonde pour ces quatre types. La géolocalisation est de plus en plus populaire, et ce n'est pas un hasard. Une personne se trouve à un endroit précis ou se rend dans un nouvel endroit et elle souhaite savoir ce qui se trouve à proximité.

En exploitant les coordonnées géographiques de l'utilisateur, vous pouvez écrire son emplacement géographique dans les requêtes de recherche et booster la pertinence des résultats, en fonction du facteur de proximité.

Supposons que nous disposons d'une application mobile qui répertorie les restaurants bons pour la santé à travers le monde…

curl -X GET 'https://host-xxxxxx.api.swiftype.com/api/as/v1/engines/food-paradise/search' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer search-xxxxxxxxxxxxxxxxxxxxxx' \
-d '{
  "boosts": {
    "current_location": {
      "type": "proximity",
      "function": "linear",
      "center": "37.6213, -122.3790",
      "factor": 8
    }
  },
  "query": "sushi"
}'

Une requête pour des sushis multiplierait le score de pertinence d'un résultat par le facteur fourni, compte tenu de sa proximité par rapport au centre. Le centre est alors informé par les données de localisation provenant du chercheur. Ainsi, il est possible de proposer des résultats en fonction de l'espace et donc particulièrement pertinents.

Le regroupement avancé est un troisième cas possible utilisant la profondeur des API Elastic App Search. Imaginons que vous proposiez de la documentation. Lorsque vous changez de version de produit, vous devez également modifier la documentation et créer de nouvelles versions.

curl -X GET 'https://host-2376rb.api.swiftype.com/api/as/v1/engines/sample-engine/search' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer search-o5bk7qpaedd2xmcsavb1d8os' \
-d '{
  "query": "meta tags",
  "result_fields": {
    "url": {
      "raw": {}
    },
    "title": {
      "raw": {}
    },
    "description": {
      "raw": {}
    },
    "version": {
      "raw": {}
    }
  },
  "group": {
    "field": "url"
  }
}'

Si un utilisateur recherche une fonction spécifique, comment regrouperiez-vous les différentes versions du document dans lesquelles la fonction apparaît ? Une requête groupée permettrait de renvoyer un résultat de recherche unique pour toutes les pages des différentes versions d'un même sujet. Vous pouvez autoriser l'utilisateur à sélectionner la version qu'il souhaite à partir de ce résultat unique, au lieu de l'obliger à examiner des douzaines de résultats correspondant aux différentes versions.

Pour Elastic App Search, la fonction de recherche va bien au-delà d'une simple recherche de document pertinent, dans un champ de recherche, effectuée par un visiteur. La recherche devient une action fonctionnelle. Vous disposez de documents et votre code peut effectuer des recherches dans ces documents, de manière intelligente. Vous pouvez automatiser les actions en fonction de ce que vous souhaitez trouver sans avoir besoin du contexte global d'un champ de recherche.

À première vue, Elastic App Search semble davantage destiné aux utilisateurs "plus techniques". En effet, les API plairont à coup sûr aux développeurs souhaitant créer des recherches flexibles et pertinentes. Cependant, bien qu'Elastic App Search vous laisse créer et indexer l'interface, le tableau de bord et les fonctionnalités qu'il contient sont ergonomiques et adaptés à tous les niveaux d'expertise technique.

Résumé

Les solutions Elastic vous aident à satisfaire aux besoins de votre activité. Si vous souhaitez intégrer une expérience de recherche de qualité au sein de vos sites Web ou de vos applications, ne cherchez plus. Elastic Site Search ou Elastic App Search, à votre guise, est la solution qu'il vous faut.

Pour en savoir plus, consultez les pages des solutions Elastic Site Search ou Elastic App Search. Ces deux solutions proposent une version d'essai gratuite pendant 14 jours, sans obligation de fournir d'informations de carte de crédit.