Moissonnage et unification de catalogues documentaires tiers

Vos données sont chez dix prestataires. Nous les rendons interrogeables ensemble. C'est la phrase entière de cette prestation : aller lire, à intervalles réguliers, des catalogues que vous ne détenez pas, en extraire les notices, les dédupliquer, les ramener à un modèle unique et les rendre consultables d'une seule requête — sans qu'une personne ait à recopier quoi que ce soit.

Le problème n'est pas la donnée, c'est sa dispersion

Une organisation qui dépend de sources externes vit le même quotidien : dix interfaces, dix vocabulaires, dix identifiants qui ne se recoupent pas, et une recherche à refaire dix fois. Personne ne manque d'information ; tout le monde manque d'un endroit où la poser ensemble. Le travail consiste donc moins à collecter qu'à réconcilier : reconnaître qu'une même entrée existe déjà sous une autre forme, choisir quoi garder, et ne jamais perdre en silence ce qui entre en collision.

Ce que nous avons déjà construit, et ce que ça a donné

Nous avons livré ce module pour une plateforme documentaire scientifique, qui agrège le fonds de dix portails publics sans en héberger le contenu. Le corpus interrogeable y atteint 3 487 672 notices moissonnées chez ces opérateurs. La campagne de référence, mesurée sur l'un d'eux, a chargé 395 115 notices en 2 h 36, à un débit stable d'environ 24 notices par seconde, en reprenant au curseur sans retraiter les 174 010 déjà présentes en base.

C'est aussi le module le mieux couvert de ce dépôt : douze fichiers de tests sur vingt-trois fichiers au total, un lot de travail clos à 38 tâches sur 38, et cinq phases vérifiées au navigateur plutôt que déclarées faites. Le pilotage se fait depuis un back-office dédié, complété par des scripts de passe incrémentale, de rattrapage, de dimensionnement et de contrôle.

Les deux défauts que nous avons trouvés en vérifiant

Ils valent mieux qu'un argumentaire, parce qu'ils n'auraient pas été trouvés autrement qu'en confrontant le code à une vraie base. Le premier était une collision d'URL : deux notices distinctes revendiquant la même adresse, dont l'une disparaissait sans bruit. Le correctif les fusionne au lieu de les perdre — une perte silencieuse est le pire défaut possible dans ce métier, puisque rien ne la signale.

Le second était un chevauchement de deux moissonnages. La garde en place vérifiait qu'aucun travail n'était en cours avant d'en démarrer un : deux lancements séparés d'une milliseconde sont passés tous les deux. La garde est désormais atomique, prise par la base elle-même le temps de la transaction, et la question ne se pose plus.

Des notices, pas des documents

Nous tenons à la distinction, y compris quand elle dégonfle le chiffre. Ce qui est moissonné, ce sont des notices : la description d'une ressource, pas la ressource. La plateforme citée plus haut rend interrogeables plusieurs millions de notices tout en n'hébergeant elle-même qu'une poignée de fichiers, et son interface renvoie l'utilisateur vers l'opérateur d'origine. Un prestataire qui vous annoncerait « trois millions de documents » vous vendrait un contresens, et vous exposerait à des questions de droits auxquelles il n'a pas réfléchi.

Au-delà de la recherche scientifique

Le contexte d'origine est documentaire, la mécanique ne l'est pas. Le même besoin se retrouve dans l'agrégation de catalogues fournisseurs, la veille réglementaire, la syndication d'annonces et la consolidation de référentiels métier. Dans tous les cas, ce que vous achetez n'est pas une technologie mais un résultat : votre catalogue et ceux de vos partenaires, interrogeables ensemble, tenus à jour sans intervention.

Interroger l'ensemble sans ajouter d'infrastructure

Unifier les données ne sert à rien si les interroger coûte un moteur de recherche hébergé de plus. Sur ce même projet, la recherche a été ramenée dans la base elle-même : vecteurs de recherche indexés, tolérance aux accents et aux fautes de frappe, classement par pertinence, groupes de synonymes propres au domaine. Le service tiers qui existait auparavant a été retiré, et rien n'a été ajouté pour le remplacer. Ce socle relève de notre prestation backend sur-mesure, dont le moissonnage n'est qu'un usage particulier.

Ce que nous ne promettons pas

Aucun délai, aucun débit et aucun volume ne sont garantis avant mesure. Les 24 notices par seconde décrivent un portail, un format et un jour : une autre source expose d'autres formats, tolère une autre charge et impose ses propres règles d'usage. Nous ne promettons pas davantage un moissonnage indéfiniment gratuit à exploiter : sur le projet de référence, la base approchait 8,66 Gio pour un plan d'hébergement plafonné à 10 Gio, et c'est le genre de mur qu'on estime avant de le heurter. Le module embarque pour cela un plafond de volumétrie et un interrupteur qui suspend la planification sans redéploiement.

La suite habituelle est un cadrage court : quelles sources, quels formats exposés, quel volume, quelle fréquence, et quelle règle de déduplication fait autorité quand deux entrées se contredisent. Le reste du catalogue d'AzurIT est décrit sur la page nos services.

Questions fréquentes

Qu'appelle-t-on le moissonnage d'un catalogue ?

Moissonner un catalogue, c'est l'interroger périodiquement chez celui qui le détient, en extraire les notices, les dédupliquer, les normaliser sous un modèle unique et les rendre interrogeables avec les vôtres. Le catalogue d'origine ne bouge pas et reste la référence : nous n'en copions que la description, et chaque notice continue de pointer vers la source qui la publie.

Que se passe-t-il si une passe de moissonnage est interrompue ?

Elle reprend là où elle s'était arrêtée. La position de lecture est mémorisée sous forme de curseur, si bien qu'un redémarrage ne retraite pas ce qui est déjà en base. Sur la campagne dont sont tirés nos chiffres, 174 010 notices déjà présentes ont été laissées de côté pendant que 395 115 nouvelles étaient chargées.

Combien de temps faut-il pour moissonner un catalogue entier ?

Nous n'avons qu'une mesure, et nous la donnons comme telle : 395 115 notices chargées en 2 heures et 36 minutes, soit un débit stable d'environ 24 notices par seconde. Ce chiffre décrit un portail précis, un jour précis. Il dépend du format exposé par la source, de sa tolérance à la charge et du volume à traiter, et il ne peut pas être promis avant d'avoir été mesuré chez vous.

Le moissonnage héberge-t-il les documents des autres ?

Non, et la distinction est importante juridiquement autant que techniquement. Ce qui est moissonné, ce sont des notices : titres, auteurs, dates, identifiants, résumés, mots-clés. Le fichier lui-même reste chez l'opérateur qui le publie, et l'utilisateur y est renvoyé. Une plateforme peut ainsi rendre interrogeables plusieurs millions de notices tout en n'hébergeant elle-même presque aucun document.

Faut-il un moteur de recherche dédié pour interroger l'ensemble ?

Pas nécessairement. Sur le projet qui sert de référence à cette page, la recherche est assurée par PostgreSQL lui-même : vecteurs de recherche indexés, tolérance aux accents et aux fautes de frappe, classement par pertinence et groupes de synonymes propres au vocabulaire du domaine. Le moteur hébergé qui existait auparavant a été retiré, sans infrastructure supplémentaire pour le remplacer.

Cette prestation ne concerne-t-elle que la recherche scientifique ?

Non. Le besoin est le même dès que des données utiles sont réparties chez plusieurs tiers : agrégation de catalogues fournisseurs, veille réglementaire, syndication d'annonces, consolidation de référentiels métier. Le domaine change, la mécanique ne change pas : lire chez l'autre, dédupliquer, normaliser, exposer une seule requête.