YaCy

Comprendre et mettre en place YaCy

YaCy est un moteur de recherche que chacun peut installer pour indexer le web (pages publiques accessibles par internet), pour indexer un intranet ou pour parcourir d'autres données avec une fonction moteur de recherche. YaCy peut être utilisé de façon autonome, mais sa principale force est de pouvoir fonctionner en réseau peer-to-peer, ce qui fait que sa puissance s'accroit avec le nombre d'utilisateurs, qu'il est entièrement acentré (tous les "peers" sont égaux et il n'y a pas un organisme administratif central) et qu'il n'est pas censurable et ne stocke pas le comportement des utilisateurs.

La liberté de l'information ainsi obtenue par le biais des logiciels libres et d'un moteur de recherche distribué est également un des objectifs du projet.

Installation

Sur sa machine locale

Il suffit juste de se rendre sur le site officiel et de télécharger l'application. Il s'agit d'un programme JAVA qui se décompresse et s'exécute tel quel, sans installation en exécutant le script startYACY.sh (pour UNIX/Linux) ou startYACY.bat (pour Windows).

Vous pouvez aussi configurer votre machine pour qu'elle le lance automatiquement au démarrage.

Sur un serveur

Si l'installation se fait sur un serveur, vous laissez le service tourner en permanence. Et vous pouvez y accéder de l'extérieur. Ça peut-être aussi utile si vous insctaller YaCy en mode Portail ou Intranet.

Le mode serveur peut aussi être utile si vous désirez utiliser un service YaCy en dehors de chez vous, comme par exemple le gestionnaire de favoris.

Installation

Pour des raisons de sécurité, YaCy ne se lance pas sur le compte administrateur. Il faut soit modifier le script de démarrage afin de contourner cette sécurité (fortement déconseillé, surtout sur un serveur), soit le lancer à partir d'un autre compte.

Créez un nouveau compte d'exécution générique (par exemple yacyuser) avec adduser. Donnez-lui les propriété normales, comme un compte utilisateur normal.

Téléchargez le paquet sur le serveur puis décompressez-le :

gunzip yacy_vxx.tar.gz

puis :

tar -xf yacy_vxx.tar.gz

Vous disposez alors d'un répertoire yacy que vous pouvez déplacez où vous voulez.

N'oubliez pas de lui donner les droit de votre utilisateur sinon le programme ne pourra pas créer les fichiers dont il a besoin (pid, …).

chown -R yacyuser yacy

Exécution

Pour le lancer sur le serveur, il faut le démarrer en tant que service. Le script de démarrage startYACY.sh s'occupe déjà de tout lancer en tâche de fond. Il faudra juste l'exécuter avec le bon utilisateur :

su -l yacyuser -c ${app_home}/startYACY.sh

En fonction du système que vous utilisez, il y a différents moyens de le transformer en service exécutable au démarrage. Il faut donc vous référer à la documentation spécifique.

Pour FreeBSD, vous pouvez voir des exemples ici, ou encore télécharger un exemple.

Configuration

Ouverture des ports du pare-feu

Par défaut, YaCy utilise le port 8090 (mais vous pouvez le changer) pour communiquer avec ses pairs. N'oubliez donc pas de permettre au pare-feu de lui permettre de dialoguer, sauf si vous voulez un mode standalone (ConfigBasic.html > Search portal for your own web pages).

Paramètres

YaCy est administrable depuis une interface web accessible sur le port 8090 de la machine qui le fait tourner.

Une fois connecté à l'interface :

  1. Administration > Configuration de base : choisissez la langue de l'interface, le mode (community, portal ou Intranet), un nom et, éventuellement un nouveau port.

  2. Administration > Accounts (ConfigAccounts_p.html): définissez un mot de passe administrateur. Et créer des utilisateurs (au moins un).

Gestion des performances

Par défaut, lorsque YaCy aura indexé un certain nombre de page, il peut occuper le processeur et ralentir votre machine. Il faut donc limiter un peu les ressources utilisées :

  1. Creation Monitor > Speed (Crawler_p.html) : par défaut, il doit être à 1500 PPM (pages par minutes). Diminuez la valeur.

  2. Admin Console > Performance (Performance_p.html) : dans la section Use Default Profile, diminuez un peu la valeur (passez à 25 ou 10%).

    Si vous utilisez le profil Prefer DHT, YaCy utilisera préférentiellement l'index distribué au lieu d'analyser les pages, ce qui permet d'économiser plus de ressources. Dans ce cas, il est conseillé d'aller dans Crawler / Harvester > Remote Crawling (RemoteCrawl_p.html) et d'activer Accept Remote Crawl Requests.

  3. Admin Console > Performance (Performance_p.html) : par défaut, la priorité d'exécution (YaCy Priority Settings) est fixée à Below normal (soit un nice de 10). Vous pouvez passer à Idle (soit un nice de 20).

  4. Admin Console > Avanced settings / Performance Settings of Busy Queues (PerformanceQueues_p.html) : par défaut, YaCy autorise 200 connexions simultanées. Lorsque le nombre de connexions commence à croître, les performances peuvent diminuer. Modifiez la valeur httpd Session Pool et abaissez-la (commencez avec 10 ou 15 puis, si tout se passe bien après plusieurs jours, augmentez la valeur).

Mémoire

YaCy nécessite une certaine quantité de mémoire pour fonctionner correctement. 800 Mo par défaut.

Allez dans Administration > Computation (ViewLog_p.html) et vérifiez si vous avez des erreurs (E) ou des avertissements (W).

Si vous avez l'erreur :

Java Heap Space

ou :

BUSYTHREAD Runtime Error in serverInstantThread.job, thread 'net.yacy.search.Switchboard.cleanupJob': null; target exception: null
java.lang.NullPointerException

c'est que nous n'avez pas assez de mémoire. Augmentez-la en modifiant la valeur Memory reserved for JVM dans Administration > Admin console > Performance (Performance_p.html).

Le nouveau paramètrage sera effectif au prochain redémarrage.

Travailler avec plusieures instances

Vous pouvez désirer travailler avec plusieurs instances de Yacy sur une même machine. Par exemple si vous avez un portail pour un site local, tout en ayant un nœud pour le réseau distribué, afin d'isoler les fonctionnements. Si le nœud tombe en panne, vous voulez que le moteur de recherche du site ne soit pas non plus indisponible.

Nouvelle installation

Vous pouvez installer deux YaCy dans deux répertoires séparés. Dans ce cas, il faut faire deux installations.

Décompressez le fichier d'installation et renommez-le.

Dans modifiez le fichier yacy.init. Remplacez la ligne port = 8090 par une autre valeur (8091).

Lancez l'instance.

Recopie

Vous pouvez aussi choisir d'effectuer une installation à partir d'une instance en fonctionnement. Il suffit alors de procéder comme suit :

  1. Recopiez le répertoire source YaCy dans un nouveau répertoire (yacy2) par simple copie.

    cp -R yacy yacy2
  2. Afin de mieux identifier quelle instance est en cours d'exécution, utilisez un nouvel utilisateur pour lancer l'instance (par exemple yacyuser2).

  3. Changez le propriétaire de la nouvelle instance en utilisant le nouvel utilisateur.

    chown -R yacycuser2 yacy2
  4. Modifiez le fichier de configuration yacy.conf de la nouvelle instance (yacy2) situé dans ./DATA/SETTINGS en modifiant les valeurs :

    • port (par exemple 8091)

  5. Supprimez les fichiers inutiles : yacy.log, yacy.pid et yacy.running.

  6. Changez le propriétaire du répertoir :

    chown -R yacycuser yacy2
  7. Ouvrez le port nouvellement configuré au niveau du pare-feu (si nécessaire).

  8. Copiez le script de démarrage et renommez-le.

    cp yacy yacy2
  9. Modifiez le répertoire de démarrage dans le script de lancement.

  10. Exécutez le script de démarrage.

    yacy2 start
  11. Connectez-vous au serveur en utilisant le port de lanouvelle instance (8091) et modifier le paramétrage (nom du noeud, mode de fonctionnement), puis redémarrer l'instance.

Utilisation

YaCy fonctionne en mode pair-à-pair grâce à un index distribué. Chaque pair enrichit son propre index et permet aux autres pairs de l'utiliser ou de le télécharger.

Pour enrichir son index, il y a deux manières simples :

  • Par crawl : on indique à YaCy une page. Il va suivre tous les liens pour trouver tous les documents reliés et les indexer.

    Le problème de cette méthode est qu'elle nécessite une intervention manuelle. Et si le nombre de pages est important, le référencement est long et yaCy utilise énormément de ressources.

  • Par proxy : on définit YaCy comme étant un proxy HTTP depuis le navigateur web. Il va alors indexer toutes les pages visitées.

    Cette méthode est plus transparente, ne requiert aucune autre intervention manuelle que la définition du proxy, conserve de bonnes performances, accélère la navigation web (rôle de cache) et indexe les pages de façon plus représentative de l'usage réel.

Rechercher un document

Pour rechercher un document (page web), il suffit d'aller dans Recherche web (index.html). De là, vous effectuez une recherche normale. Les recherches sont plus efficaces si les termes recherchés sont en entier, correctement écrit (accents, orthographe, …).

Les résultats peuvent être enrichis par des Crawls.

Rechercher un fichier

Pour rechercher un fichier, il suffit d'aller dans File search (yacyinteractive.html). De là, vous effectuez une recherche. Les recherches sont plus efficaces si les termes recherchés sont en entier, correctement écrit (accents, orthographe, …).

Le resultat ne retourne pas un mot contenu dans un document, comme pour une recherche web, mais un mot contenu dans le nom du fichier. Celui-ci peut être un document web, mais aussi tout autre fichier (audio, vidéo, PDF, …).

Pour filtrer sur un type bien défini de fichier, ajoutez filetype:extension derrière votre recherche. Exemple :

oasis filetype:mp3

pour rechercher tous les fichiers d'extension .mp3 ayant dans leur nom le mot oasis.

Les résultats peuvent être enrichis par des Crawls.

Crawler une page

Dans Administration > Crawler / Harvester (CrawlStartSite_p.html): copier le lien de votre page dans le champ Site et cochez la case Limitation pour limiter le nombre de documents et éviter une ainsi un engorgement et une baisse de performance. Puis valider (Start new crawl).

Vous pouvez interrompre une analyse à tout moment dans Creation monitor.

Crawler un flux RSS

Dans Administration > Crawler / Harvester > RSS Feed importer (Load_RSS_p.html) : copier le lien de votre flux RSS dans le champ URL of the RSS feed et cliquez sur Show Preview.

Vous pouvez ajouter le flux à l'index (Add all items to index) ou programmer une exécution régulière.

Configurer le proxy

Vous avez normalement créé un utilisateur (non admin) auparavant depuis l'interface (Admin console > Accounts).

Dans votre navigateur, dans les Préférences > réseau/ connexion > Proxy, définissez le proxy dans le champ Adresse de configuration automatique de proxy par le chemin http://ip_du_serveur_yacy:8090/autoconfig.pac.

Une fois validé, le navigateur vous demandera [utilisateur/mot de passe] pour accéder au proxy. Utiliser le compte utilisateur (non admin) précédemment créé.

Configurer le seed server

Vous pouvez transformer votre noeud en serveur seed, c'est à dire devenir une référence en distribuant les adresses d'autres machines qui partagent leur index distribué (DHT).

Pour cela, vous devez disposer en plus d'un serveur web sur votre machine. Vous pouvez aussi utiliser une machine distante. Il faudra alors configurer l'accès FTP ou SCP.

Dans un répertoire géré par votre serveur web, créez un fichier vide :

touch /usr/local/www/apache22/yacy/seed.txt

Vérifiez que ce fichier soit accessible depuis votre navigateur à l'adresse : http://votre.domaine.ici/chemin/vers/seed.txt

Dans Admin Console > Avanced settings / Paramètres d'envoi de Seed (Settings_p.html?page=seed) :

  • Upload Method: file

  • URL: http://votre.domaine.ici/chemin/vers/seed.txt

  • File Location: /usr/local/www/apache22/yacy/seed.txt

Validez

Si tout est correct, un message de validation apparaît et le fichier se remplit de données…

Administration

Programmer le rafraîchissement automatique des pages web

Lorsque vous avez analysé un domaine (Crawl), il peut être utile de rafraîchir le parcours afin de régulièrement prendre en compte les modifications.

Dans Administration > Process Scheduler (Table_API_p.html) vous disposez de toutes les actions que vous avez réalisées. Vous pouvez en supprimer (si elles sont inutiles ou en double) et les programmer pour qu'elles se réexécutent régulièrement.

Exécution tous les jours à heure fixe

Pour l'action qui vous intéresse (ligne du tableau) :

  • Dans la colonne Event Trigger, sélectionner le menu no event (valeur par défaut) et passer en activate event.

    La ligne s'active (en rouge) et les sélecteurs changent. Il y en a deux, le premier pour choisir l'exécution (run regular, run once, off) et le recond pour définir l'heure.

  • Choisir votre type d'exécution et l'heure d'exécution.

Exécution régulière (sans heure fixe)

Pour l'action qui vous intéresse (ligne du tableau) :

  • Dans la colonne Scheduler, sélectionner le menu no repetition (valeur par défaut) et passer en activate scheduler.

    La ligne s'active (en rouge) et les sélecteurs changent. Il y en a deux, le premier pour choisir la valeur (1, 2, 3, …, off) et le recond pour définir l'unité (days, hours, minutes).

  • Choisir votre valeur et votre unité.

Programmer le rafraîchissement automatique des flux RSS

De la même façon que pour les pages web, les flux RSS peuvent être rafraîchis régulièrement afin de prendre en compte les modifications.

Dans Administration > Crawler/Harvester > RSS Feed importer (Load_RSS_p.html) vous disposez de toutes les actions que vous avez réalisées sur les flux RSS (normalement YaCy a ajouté automatiquement tous les flux qu'il a rencontrés). Vous pouvez en supprimer (si ils sont inutiles ou en double) et les programmer pour qu'ils se réexécutent régulièrement.

Sélectionnez les flux RSS qui vous intéressent puis validez avec Add Selected Feeds to Scheduler. Par défaut, le rafraîchissement sera effectué tous les 7 jours.

Si vous voulez changer la fréquence de rafraîchissement, cliquez sur le lien du lux RSS lui-même (colonne URL/Referrer). Vous accédez alors au détail du flux.

Dans la zone principale, sélectionnez l'option sur schedule et choisissez votre fréquence (valeur + unité).

Supprimer des éléments de l'index

Il peut être utile de supprimer certains éléments de l'index (erreurs, domaines non souhaités, etc.).

Dans Administration > Index Administration > Statistics about top-domains in URL Database (IndexControlURLs_p.html) : cliquez sur Generate Satistics.

La liste des n (100 par défaut) premiers domaines s'affiche avec le nombre de liens référencés. Vous pouvez supprimer un domaine de l'index en cliquant sur Delete all correspondant.