Et si on partage nos recherches avec Yacy ?

Par Dryusdan le

Au détour d'une conversation avec @Cafou à propos des « javaseries » de nos clients, il me parle de Yacy, un moteur de recherche en peer 2 peer.
Le concept me tente, et plutôt deux fois qu'une car cela implique de ne plus dépendre de la moindre API tierce (Searx par exemple se base sur le scrapping des pages de Google, Qwant et DuckDuckGo). Le moindre blocage d'un site et Searx ne fonctionne plus. Dans le cas présent, je ne dépend plus d'un tiers mais du réseau de partage.

Concrètement, comment fonctionne Yacy ?

Yacy est un moteur de recherche qui se base sur son index et celui des autres instances Yacy.
Lorsque vous effectuez une recherche, chaques mots est « hashé ». Avec ce hash, l'instance demande au réseau si les autres noeuds ont des résultats grâce à la technologie DHT. S'il y a une occurrence, elle est transmise à l'instance qui la demande.

Il y a ensuite plusieurs modes de fonctionnement pour Yacy : Communautaire, portail de recherche pour site local et intranet. En mode Communautaire vous avez également deux modes : Peer to Peer et Robinson.

Le mode Peer to Peer fait que vous êtes ouvert à toutes les requêtes, vous partagez vous indexez et vous parcourez le Web.
En mode Robinson vous pouvez monter un cluster de Yacy. Ce cluster est interrogeable, partage son index mais ne récupère pas l'index d'autre noeud quand on l'interroge.

Une fois ces réglages là effectués, vous pouvez indexer les sites que vous souhaitez. Personnellement j'ai indexé quelques sites, surtout des sites perso (dont certains font approximativement 18 000 pages !).
Ça indexe bien, ça crawl la page, l'analyse, récupère les liens, indexe les mots de la page dans la base SolR, indexe les liens de la page etc... On peut cependant limiter les crawl au domaine (c'est à dire sans indexer les sites qui ont un lien dans le premier site).
Autre avantage, on peut abonner l'instance à des flux RSS pour que les nouvelles pages soient indexées.
Cependant niveau ressource ça consomme un max quand Yacy indexe. Lorsque c'est 20-30 petits sites ça va, mais quand on atteint les 500 000 pages à indexer ça commence à demander quelques ressources (environs 4 vCPU).

Et la différence avec d'autres moteurs de recherche ?

Avec Yacy on ne dépend de rien d'autre que son index et celui des autres.
Par rapport à Google il n'y a pas de profilage, donc pas de bulle de pensée, ce qui peut plaire à certains.

Actuellement est-ce utilisable pour un utilisateur lambda ?

On va pas se mentir, non.
Dans le "freeworld" (Un réseau spécifique regroupant environs 400 noeuds à travers le monde) il y a 1 396 987 390 documents indexés.
Rien qu'en tapant "how to create dummy interface linux" sur Google j'ai 5 millions de résultats. Donc il manque énormément de page indexées sachant que le Web est très vaste.

Mais le projet est super intéressant. Il est possible d'avoir de vrais résultats avec plein de sites si beaucoup d'acteurs indexent leurs sites (par exemple NextInpact, Arrêt sur Image, Sebsauvage, Framasoft). Encore une fois, tout dépend de la masse.
Sachant que Yacy peut tourner sans problème sur un Rasberry PI, si chaque CHATONS l'utilisait et indexait ses services ainsi que les sites hébergés, on aurait déjà de meilleurs résultats.
Il manque juste d'utilisateurs, l'outil est déjà bien fonctionnel et a un vrai potentiel.

Merci à Von pour la correction.
Photo par Agence Olloweb sur Unsplash.