Ça fait plusieurs années que j'avais envie de tester YaCy. C'est désormais chose faite. \o/
YaCy est un moteur de recherche pour le web (attention, y'a d'autres types de moteurs de recherche genre indexation de fichiers). Pas un proxy devant Google comme l'était StartPage (devenu depuis un métamoteur de recherche, apparemment) ou le défunt Scroogle. Pas un métamoteur qui agrège les résultats d'autres moteurs existants comme Seeks ou Searx. YaCy fait tout lui-même : parcourir (crawler) le web, indexer les contenus, chercher dans l'index.
Mieux que ça, YaCy fonctionne en pair à pair : chaque ordinateur sur lequel il est installé rejoint un même réseau et contribue à stocker une partie de l'index commun voire il parcourt le web pour le remplir. Le seul bout de point central que j'ai identifié à première vue, c'est que le code du soft contient l'adresse de quelques serveurs qui seront contactés au démarrage de l'instance YaCy pour récupérer rapidement une liste (incomplète, imparfaite, etc.) de nœuds YaCy. Car l'initialisation avec seulement la DHT, ça prend du temps. Un peu comme les trackers BitTorrent qui existent par commodité. Ils ne sont ni indispensables ni immuables.
Du coup, on retrouve les caractéristiques désirables habituelles : logiciel libre, sous le contrôle de l'utilisateur, P2P, pas censurable, etc.
Notons que la participation au réseau P2P est facultative : YaCy peut servir à indexer, en privé, un intranet. YaCy peut servir à proposer un moteur de recherche sur votre site web personnel en lieu et place d'un "applet" qui lance un « site:monsite.exemple mot-clé_saisi » sur Google.
Comme la plupart des applis en Java (on retrouve ça avec Kafka, Storm ou Zookeeper, par exemple), la verbosité est mal configurée par défaut, ce qui fait que YaCy consigne absolument tout dans ses logs : quel pair lui dit bonjour, envoi/réception de fragments de DHT, etc. Bref, ça bourrine bien le support de stockage. Et il n'y a aucune option dans l'interface web pour changer ce comportement. Ma méthode :
sudo sed -i 's/INFO/WARNING/' /var/lib/yacy/LOG/yacy.logging
sudo systemctl restart yacy
Quelques comportements difffèrent de ceux de Google :
Dans les résultats d'une recherche, je n'ai pas compris comment fonctionnent les boutons « recommander » / « supprimer ». Ça n'influe pas durablement (entre deux recherches successives des mêmes termes) l'ordre ou la présence des résultats. :/ C'est peut-être réservé au mode intranet / moteur de recherche pour un site web donné ?
Tout nœud YaCy est amené à stocker une petite partie de la DHT. Cela se fait en arrière-plan ainsi que lors des recherches, ce qui fait qu'un contenu ajouté dans l'index global par une machine n'est pas perdu lorsque cette machine disparaît du réseau YaCy. Testé et approuvé : 2 mois après le départ de ma machine du réseau YaCy, le contenu original qu'elle avait ajouté à l'index est encore présent. Chaque machine participante au réseau est aussi amenée à publier sa liste de pairs, ce qui permet de l'utiliser comme point d'entrée dans le réseau.
Le « .yacy » n'est pas un TLD au sens ordinaire du DNS, il n'y a pas de serveurs qui font autorité dessus. Pour les utiliser (genre nom_de_mon_nœud.yacy), il faut configurer votre navigateur pour utiliser votre instance YaCy comme un proxy HTTP (localhost:8090). Voir https://web.archive.org/web/20130325194934/http://yacy-forum.org/viewtopic.php?f=2&t=255 (oui, le forum a changé d'URL, c'pour ça que j'utilise archive.org).
La section « Index Deletion » de l'interface d'administration peut faire peur genre on peut croire à une possibilité de censure ou, en tout cas, à une possibilité pour quelqu'un qui a apporté du contenu au réseau, de le retirer, de gré ou de force. D'après mes tests, dans le mode "freeworld" (participation au réseau P2P YaCy), la suppression a bien lieu dans l'index local mais elle n'est pas propagée dans le réseau. Donc un résultat de recherche est ajouté à nouveau dans l'index à la prochaine recherche, quand le réseau sera a nouveau consulté. Je pense que cette fonctionnalité est utile dans les modes intranet / recherche privée.
Malgré ce que le projet raconte dans sa FAQ ( http://www.yacy-websearch.net/wiki/index.php/En:FAQ ), je pense qu'il faut prendre les devants et héberger des instances YaCy mutualisées, ce qui rendra le flicage inopérant.
Truc rigolo : YaCy peine vraiment à analyser la structure d'un shaarli et ne parvient pas à récupérer le permalink : il y ajoute toujours un « = » final, ce qui ruine forcément la validité de l'URL. :-
En résumé : je suis plutôt impressionné par la masse de taff abattue, par le fonctionnement P2P mais la pertinence des résultats rend un usage au quotidien vraiment difficile à envisager. Le problème, ce n'est pas de crawler toujours plus de contenus puisque même avec du bon contenu indexé, les résultats ne sont pas pertinents. Le problème c'est l'algo de construction et d'enrichissement de l'index et de tri des résultats. N'est pas Google qui veut. :(