Développé par | Michael Peter Christen et les contributeurs au projet |
---|---|
Première version | 2004[1] |
Dernière version | 1.924 () |
Dépôt | github.com/yacy/yacy_search_server |
État du projet | Actif |
Écrit en | Java |
Environnement | Multiplate-forme[2],[3] |
Langues | Multilingue |
Type | Moteur de recherche Internet pair à pair libre et gratuit[2],[4],[5],[6],[7] |
Politique de distribution | Gratuit |
Licence |
Licence libre (GNU GPL v2) |
Site web | yacy.net/fr |
YaCy (pour Yet Another Cyberspace, homophone anglais de ya see (vous voyez)) est un moteur de recherche libre fonctionnant selon le principe d'un réseau pair à pair. Ce logiciel est développé en Java et était installé, fin 2006, sur des centaines d'ordinateurs appelés YaCy-peers ou postes-YaCy (600 actifs quotidiennement en [8]). YaCy est par exemple utilisé par l'Université Johannes Gutenberg de Mayence[9].
Un réseau YaCy est caractérisé par une architecture distribuée (non centralisée). Tous les nœuds (pairs) YaCy sont équivalents et il n'existe pas de serveur principal.
Sur chaque poste, YaCy tourne soit en mode robot d'indexation ou en mode proxy. Chaque poste-YaCy lance des robots d'indexation qui analysent les pages trouvées. Les résultats sont enregistrés dans une banque de données distribuée (index).
L'accès au moteur de recherche se fait par l'intermédiaire d'un serveur Web local qui présente un champ pour y introduire les mots clefs et fournit les résultats sous forme d'une page web habituelle.
Le projet YaCy a été fondé en 2003 par Michael Christen[10]. Le logiciel est délivré sous licence libre GNU GPL.
Le cœur du moteur de recherche YaCy n'est pas, comme pour d'autres moteurs de recherche, un serveur central, mais un logiciel qui fonctionne sur presque tous les systèmes d'exploitation. La recherche s'effectue sur une page web locale, délivrée par le logiciel installé. L'affichage des résultats se présente également sous la forme d’une page web.
Un serveur proxy est couplé au système P2P : il est utilisable en option et indique automatiquement les pages visitées. Cette information n'est pas stockée par les sites visités, qui peuvent récupérer des informations supplémentaires via GET ou POST ou qui utilisent des cookies ou l'identification HTTP (par exemple pour les pages protégées par mot de passe)[11]. De cette manière, il est assuré que seules des données ouvertement accessibles à tous sont indiquées.
Le moteur de recherche YaCy est fondé sur quatre éléments[12]:
Le programme est fondé sur un serveur web qui fonctionne comme un proxy-cache. L'interface utilisateur est accessible via le serveur web ; on peut y effectuer des recherches ou administrer son poste. Le proxy transmet son code au crawler, ce qui signifie que toutes les pages visitées non personnalisées sont automatiquement ajoutées à l'index. YaCy se sert d'Apache Solr depuis la version 1.04.9097. En outre, le réseau YaCy offre quelques domaines accessibles via le proxy.
À la différence de lors de l'échange de données, les résultats d'un moteur de recherche P2P doivent être disponibles immédiatement. Afin de le garantir, YaCy utilise une table de hachage distribuée. Cela signifie que tous les mots et les URLs stockés sont envoyés aux postes dont la valeur de hachage va avec la valeur de hachage correspondante du mot ou de l'URL. Lors d'une recherche, cela se passe dans l'autre sens: on ne recherche que chez les postes qui peuvent, d'après l'URL, connaître leur valeur de hachage pour ce mot. Ainsi, seule une fraction des postes est contactée lors de la recherche, afin d'obtenir des résultats malgré tout satisfaisants.
YaCy différencie quatre types de postes:
Le protocole YaCy consiste en des servlets texte que le serveur web intégré met à disposition sous /yacy/servletname.html. Les autres postes lui transmettent des données via les paramètres GET: ils reçoivent en réponse un simple texte, dont le format exact diffère selon les servlets.
À l'amorçage, YaCy essaie de trouver d'autres postes du réseau. Pour cela, il cherche tout d'abord dans le fichier superseed.txt une seedlist à télécharger: les URLs de seedlists chargées par d'autres postes s'y trouvent. Puis il obtient via le fichier seeds.txt les références à d'autres postes, et ainsi le contact du réseau YaCy peut être entrepris. Au prochain démarrage, YaCy peut être amorcé par les seeds connues. Les seedlists sont alors utiles uniquement lorsque de nombreuses références ne sont plus correctes.