Un probleme semble survenir concernant la gestion de thread.per.host .
En effet, nutch renvoie des exceptions timeout sur une meme seconde de plusieurs threads a la fois.
A suivre...
mercredi, novembre 23, 2005
jeudi, octobre 20, 2005
Introduction d'une application J2EE
Juste quelques notes...
Déployer une application correctement.
Structure d'une application
Tomcat est souvent installé dans le dossier /usr/share/tomcat/.
Les applications que vous réalisez se trouveront dans le dossier /usr/share/tomcat/webapps/.
Votre application applic1 par exemple se trouvera dans le dossier /usr/share/tomcat/webapps/applic1/.
Pour fonctionner, votre application doit posséder la structure suivante :
applic1/
....ressources Web plubliques (statiques html ou jsp)
....WEB-INF/
........web.xml
........lib/
............librairies jar utilisées par vos pages (ce que vous avez développé)
........classes/
............classes utilisées par vos pages (si vous ne les avez pas en jar)
Attardons nous sur le seul fichier qui doit respecter une norme (web.xml), voici son contenu : WEB.XML
Le seul paramètre à modifier est le nom du fichier page d'accueil à remplacer dans le tag welcome-file. Le fichier web.xml PEUT etre utilisé tel quel. Nous ne verrons pas toutes les opérations possibles.
Du code JAVA dans Ma Page HTML :
Les points majeurs à retenir pour réaliser une page jsp et faire cohabiter du code sont les suivants :
* Tout code JAVA doit etre entouré des balises <% et des balises %>
* Toute page JSP doit posséder une en-tete
* Toute page JSP présente l'extension de fichier .jsp
* Il y a bcp de commandes JSP mais seules quelques unes sont utiles.
Déployer une application correctement.
Structure d'une application
Tomcat est souvent installé dans le dossier /usr/share/tomcat/.
Les applications que vous réalisez se trouveront dans le dossier /usr/share/tomcat/webapps/.
Votre application applic1 par exemple se trouvera dans le dossier /usr/share/tomcat/webapps/applic1/.
Pour fonctionner, votre application doit posséder la structure suivante :
applic1/
....ressources Web plubliques (statiques html ou jsp)
....WEB-INF/
........web.xml
........lib/
............librairies jar utilisées par vos pages (ce que vous avez développé)
........classes/
............classes utilisées par vos pages (si vous ne les avez pas en jar)
Attardons nous sur le seul fichier qui doit respecter une norme (web.xml), voici son contenu : WEB.XML
Le seul paramètre à modifier est le nom du fichier page d'accueil à remplacer dans le tag welcome-file. Le fichier web.xml PEUT etre utilisé tel quel. Nous ne verrons pas toutes les opérations possibles.
Du code JAVA dans Ma Page HTML :
Les points majeurs à retenir pour réaliser une page jsp et faire cohabiter du code sont les suivants :
* Tout code JAVA doit etre entouré des balises <% et des balises %>
* Toute page JSP doit posséder une en-tete
* Toute page JSP présente l'extension de fichier .jsp
* Il y a bcp de commandes JSP mais seules quelques unes sont utiles.
vendredi, août 05, 2005
Définition d'un Grid
Ian Foster, Prof. à l'université de Chicago, auteur de What is The Grid? et d'autres publications, développeur de Globus, a validé ma définition du grid. Voici sa première version.
DEFINITION
Une grille informatique ou grid est une infrastructure virtuelle garantissant des qualités de service non-triviales et constituée d'un ensemble de ressources informatiques partagées, hétérogènes, coordonnées et non-contrôlées.
"Le grid" (à l'image de "l'internet") est un grid utilisant des protocoles standards afin de pouvoir politiser les partages de ressources entre groupements autonomes d'individus/d'institutions appelés organisations virtuelles.
DEVELOPPEMENT DE LA DEFINITION
Une grille est en effet une infrastructure, c'est-à-dire des équipements techniques d'ordre matériels et logiciels. Cette infrastructure est qualifiée de virtuelle car les relations entre les entités qui la composent n'existe pas matériellement mais numériquement.
Une grille garantit des qualités de service non-triviales, c'est-à-dire qu'elle se distingue des autres infrastructures dans son aptitude à répondre adéquatement à des exigences (accessibilité, disponibilité, fiabilité, ...) compte tenu de la puissance de calcul qu'elle représente.
Une grille se compose de ressources informatiques : tout élément qui permet l'exécution d'une tâche numérique. Cette définition inclût bien sûr les ordinateurs personnels, mais également les téléphones portables, les calculatrices et tout object qui présente un composant informatique.
Ces ressources sont qualifiées de :
DEFINITION
Une grille informatique ou grid est une infrastructure virtuelle garantissant des qualités de service non-triviales et constituée d'un ensemble de ressources informatiques partagées, hétérogènes, coordonnées et non-contrôlées.
"Le grid" (à l'image de "l'internet") est un grid utilisant des protocoles standards afin de pouvoir politiser les partages de ressources entre groupements autonomes d'individus/d'institutions appelés organisations virtuelles.
DEVELOPPEMENT DE LA DEFINITION
Une grille est en effet une infrastructure, c'est-à-dire des équipements techniques d'ordre matériels et logiciels. Cette infrastructure est qualifiée de virtuelle car les relations entre les entités qui la composent n'existe pas matériellement mais numériquement.
Une grille garantit des qualités de service non-triviales, c'est-à-dire qu'elle se distingue des autres infrastructures dans son aptitude à répondre adéquatement à des exigences (accessibilité, disponibilité, fiabilité, ...) compte tenu de la puissance de calcul qu'elle représente.
Une grille se compose de ressources informatiques : tout élément qui permet l'exécution d'une tâche numérique. Cette définition inclût bien sûr les ordinateurs personnels, mais également les téléphones portables, les calculatrices et tout object qui présente un composant informatique.
Ces ressources sont qualifiées de :
- Partagées : elles sont mises à la disposition des différents consommateurs de la grille.
- Hétérogènes : elles sont de toute nature, les ordinateurs peuvent différer par exemple de par leur système d'exploitation.
- Coordonnées : les ressources sont arrangées, mises en relation et politisées en vue d'une fin, d'un objectif. Cette tâches est souvent remplie par un ou plusieurs ordonnanceurs.
- Non-controlées : les ressources ne sont pas contrôlée par une unité commune. Contrairement à un cluster, les ressources sont hors de la portée d'un moniteur de contrôle.
Spécifications d'un grid ou "qu'est-ce q'un bon grid ?" :
L'accès à cette énorme puissance doit faire intervenir les notions suivantes :
- fiable/sûr
- politisé en organisations virtuelles
- peu coûteux
- consistant/régulier
- envahissant : le calcul se répend sur les entités de l'infrastructure
à accès dominant et peu coûteux conformé sûr aux possibilités informatiques à extrémité élevé
Un grid doit utiliser des protocoles standards.
Grid Search Engine
Evaluer l'utilité d'un crawler distribué (sous une plateforme grid dans notre cas), tel sera l'objet du projet Grid@Home.
Je présenterai ce projet le 14 septembre prochain à Poznan Pologne. La présentation sera réalisée dans le cadre de CoreGrid, le réseau d'excellence européen en matière de Grid.
Je présenterai ce projet le 14 septembre prochain à Poznan Pologne. La présentation sera réalisée dans le cadre de CoreGrid, le réseau d'excellence européen en matière de Grid.
mercredi, juin 22, 2005
Projet de communauté d'intérêt
Les informations recensées par tout type de moteur de recherche sont très nombreuses. Mettre la main sur un document (web ou d'un système informatique) donné en utilisant un moteur de recherche est une opération fastidieuse. Les moteurs de recherche actuels constituent pourtant les seuls solutions de recherche.
L'algorithmique notamment par les techniques de ranking ne permet pas d'obtenir un niveau suffisant de qualité en matière de recherche de documents. L'essence des communautés d'intérêt naît de ce constat et son objectif est de favoriser la recherche de documents. Une communauté d'intérêt est une organisation virtuelle permettant de rassembler l'expérience de nombreuses personnes afin de la partager.Une communauté d'intérêt peut être adaptée pour les moteurs de recherche. Il s'agit par exemple de construire des ontologies permettant de classer les documents ou encore d'ajouter des informations correspondant à certains mots de recherches (tips).
Exemple :
Une entreprise A dispose d'un moteur de recherche pour référencer ses documents.
Un employé doit prendre en main le projet Machin abandonné l'année passée.
Il effectue une recherche avec les mots "projet MACHIN".
Sur la deuxieme page de résultats il retrouve le document du projet MACHIN.
Grace à la communauté d'intérêt, il peut ramener en première position le document du projet machin pour toutes les recherches contenant le mot "machin" en y ajoutant un commentaire.Les possibilités sont assez illimitées selon l'implémentation de la communauté d'intérêt.
La communauté d'intérêt développée au CETIC vise à construire des onthologies permettant de classer des mots de recherche et des annuaires (collection d'urls). Elle permet également d'associer des messages à certains mots de recherche ce qui permet d'obtenir des informations directement.
Les onthologies et les classements sont obtenu via une pyramide panoptique. C'est une adaptation des théories de Michel Foucault, dans le livre publié en 1975 « Surveiller et punir » où Foucault y développe deux concepts, celui de panoptisme et celui de société disciplinaire. Brièvement, les informations doivent être validées plusieurs fois avant d'être prise en compte par le moteur de recherche, tandis que les mauvaises propositions sont sanctionnées.
L'algorithmique notamment par les techniques de ranking ne permet pas d'obtenir un niveau suffisant de qualité en matière de recherche de documents. L'essence des communautés d'intérêt naît de ce constat et son objectif est de favoriser la recherche de documents. Une communauté d'intérêt est une organisation virtuelle permettant de rassembler l'expérience de nombreuses personnes afin de la partager.Une communauté d'intérêt peut être adaptée pour les moteurs de recherche. Il s'agit par exemple de construire des ontologies permettant de classer les documents ou encore d'ajouter des informations correspondant à certains mots de recherches (tips).
Exemple :
Une entreprise A dispose d'un moteur de recherche pour référencer ses documents.
Un employé doit prendre en main le projet Machin abandonné l'année passée.
Il effectue une recherche avec les mots "projet MACHIN".
Sur la deuxieme page de résultats il retrouve le document du projet MACHIN.
Grace à la communauté d'intérêt, il peut ramener en première position le document du projet machin pour toutes les recherches contenant le mot "machin" en y ajoutant un commentaire.Les possibilités sont assez illimitées selon l'implémentation de la communauté d'intérêt.
La communauté d'intérêt développée au CETIC vise à construire des onthologies permettant de classer des mots de recherche et des annuaires (collection d'urls). Elle permet également d'associer des messages à certains mots de recherche ce qui permet d'obtenir des informations directement.
Les onthologies et les classements sont obtenu via une pyramide panoptique. C'est une adaptation des théories de Michel Foucault, dans le livre publié en 1975 « Surveiller et punir » où Foucault y développe deux concepts, celui de panoptisme et celui de société disciplinaire. Brièvement, les informations doivent être validées plusieurs fois avant d'être prise en compte par le moteur de recherche, tandis que les mauvaises propositions sont sanctionnées.
mercredi, juin 08, 2005
Moteur de Gogole !
Fier de mon petit plat pays de Belgique et davantage encore de ma ville natale, je vous présente le moteur Gogole Liège : http://www.gogole.be/
A visiter!
A visiter!
mardi, juin 07, 2005
Le spamdexing
Le « spamdexing » désigne tous les moyens pour tromper les moteurs de recherche chargés d'indexer et de classer les sites.
L'article Ces tricheurs qui polluent Google publié sur 01net synthétise efficacement les techniques souvent dénoncées permettant d'améliorer frauduleusement le référencement dans les moteurs de recherche.
L'article Ces tricheurs qui polluent Google publié sur 01net synthétise efficacement les techniques souvent dénoncées permettant d'améliorer frauduleusement le référencement dans les moteurs de recherche.
Aspell correcteur orthographique
La correction orthographique dans les moteurs de recherche est désormais non pas un plus, mais une incontournable fonctionnalité attendue par les utilisateurs.
Afin de réaliser facilement ce genre de mécanisme, le développeur sera certainement intéressé par GNU Aspell libre et open source.
Afin de réaliser facilement ce genre de mécanisme, le développeur sera certainement intéressé par GNU Aspell libre et open source.
Actualités moteur de recherche
Les technologies des moteur de recherche continuent définitivement à bouger. Parmis les évènements à signaler on notera :
La sortie de Google Search Appliance et de Google Mini. Il s'agit de deux solutions de recherche prêtes à l'emploi : la première solution s'élève à 27000 euros tandis que l'autre affiche 3000 euros. L'intérêt principal réside dans le caractère prêt à l'emploi du produit. Il s'agit d'une solution rapide à installer et commercialisée déjà aux états unis.
Google toujours, ouvre sa bibliothèque Google Print au grand public. Ce service web encore en test permet d'étendre la recherche aux textes imprimés de nombreuses universités américaines (Harvard, New York, ...). Cela n'est qu'un début, bien que la BNF (France) a refusé l'accès à ses ouvrages et qu'un vaste projet Européen concurrent a été lancé.
DoubleTrust a fait son apparition : dans une première section il affiche les résultats communs à Google et Yahoo. Il affichera également les résultats orphelins de l'un des moteurs.
Netbooster, société européenne, propose des dispositifs de filtrage et de détection de fraude des clics. Ceci afin de lutter contre la fraude des clics sur liens publicitaires, qui représente un danger majeur pour l'économie du Web.
La sortie de Google Search Appliance et de Google Mini. Il s'agit de deux solutions de recherche prêtes à l'emploi : la première solution s'élève à 27000 euros tandis que l'autre affiche 3000 euros. L'intérêt principal réside dans le caractère prêt à l'emploi du produit. Il s'agit d'une solution rapide à installer et commercialisée déjà aux états unis.
Google toujours, ouvre sa bibliothèque Google Print au grand public. Ce service web encore en test permet d'étendre la recherche aux textes imprimés de nombreuses universités américaines (Harvard, New York, ...). Cela n'est qu'un début, bien que la BNF (France) a refusé l'accès à ses ouvrages et qu'un vaste projet Européen concurrent a été lancé.
DoubleTrust a fait son apparition : dans une première section il affiche les résultats communs à Google et Yahoo. Il affichera également les résultats orphelins de l'un des moteurs.
Netbooster, société européenne, propose des dispositifs de filtrage et de détection de fraude des clics. Ceci afin de lutter contre la fraude des clics sur liens publicitaires, qui représente un danger majeur pour l'économie du Web.
mercredi, juin 01, 2005
N1GE Sun Grid Engine
Je suis cette semaine en formation chez Sun afin de suivre le module de formation "N1 Grid Engine Advanced Administration".
Ce moteur de Grid a ete implemente en parallele avec leur produit open source. Je remarque que leur système est tres bien abouti. Il répond a la plupart des critères attendus pour un systeme de type HPC (high predictable cluster).
Sun annonce que N1GE est un Grid complet pour les Departments Grid et Enterprise Grid, mais ne convient pas en tant que tel pour les Global Grid. Il y a sans doute moyen d'étendre facilement à un global grid en couplant la suite de Sun à un système tel que Globus.
Voici les fonctionnalités importantes de N1GE qui font de lui à mes yeux l'un des meilleurs systèmes :
* Chaque job en exécution est associé avec un slot. Le scheduler n'a pas plus de jobs en exécution que de slots associés avec une file d'attente.
* L'architecture est composée de executable host (noeuds), master, submit hosts, admin hosts, chacune de ces entités pouvant se retrouver sur la meme machine bien entendu.
* N1GE dispose d'un GUI complet !
* A chaque file d'attente peuvent s'attacher des règles de scheduling et d'autres paramètres.
* Il est possible de limiter l'utilisation des ressources. Il est possible de réserver des ressources pour un job. Il est possible de spécifier des ressources pour un job.
* Plusieurs politiques de scheduling sont possibles : FIFO, Posix, Tickets.
* Il est possible de réordonnancer à la volée.
* Les politiques de scheduling permettent de migrer certaines taches à l'aide de technique de checkpointing lorsqu'un évènement défini a lieu (exemple : si l'utilisation du processeur dépasse 1 heure, migrer le job).
* Il est possible de créer des projets (auquel on peut associer des tickets de priorité). Il est possible de créer des départements : une liste d'utilisateurs et leurs droits.
Gros bémol du produit : tout fonctionne en NFS => l'extension au delà d'un réseau local nécessite donc le deploiement d'une autre architecture (éventuellement avec Globus).
Le petit point negatif : peut-être un manque d'acteurs intelligents permettant de se passer d'un bon nombre de choix de configuration. Mais je ne doute pas que certains au contraire apprecieront la customisabilite de n1Ge.
Quelques adresses :
N1 Grid Engine (anglais)
Sun Grid Engnie project (anglais)
N1 Grid Engine 6 documentation (anglais)
Ce moteur de Grid a ete implemente en parallele avec leur produit open source. Je remarque que leur système est tres bien abouti. Il répond a la plupart des critères attendus pour un systeme de type HPC (high predictable cluster).
Sun annonce que N1GE est un Grid complet pour les Departments Grid et Enterprise Grid, mais ne convient pas en tant que tel pour les Global Grid. Il y a sans doute moyen d'étendre facilement à un global grid en couplant la suite de Sun à un système tel que Globus.
Voici les fonctionnalités importantes de N1GE qui font de lui à mes yeux l'un des meilleurs systèmes :
* Chaque job en exécution est associé avec un slot. Le scheduler n'a pas plus de jobs en exécution que de slots associés avec une file d'attente.
* L'architecture est composée de executable host (noeuds), master, submit hosts, admin hosts, chacune de ces entités pouvant se retrouver sur la meme machine bien entendu.
* N1GE dispose d'un GUI complet !
* A chaque file d'attente peuvent s'attacher des règles de scheduling et d'autres paramètres.
* Il est possible de limiter l'utilisation des ressources. Il est possible de réserver des ressources pour un job. Il est possible de spécifier des ressources pour un job.
* Plusieurs politiques de scheduling sont possibles : FIFO, Posix, Tickets.
* Il est possible de réordonnancer à la volée.
* Les politiques de scheduling permettent de migrer certaines taches à l'aide de technique de checkpointing lorsqu'un évènement défini a lieu (exemple : si l'utilisation du processeur dépasse 1 heure, migrer le job).
* Il est possible de créer des projets (auquel on peut associer des tickets de priorité). Il est possible de créer des départements : une liste d'utilisateurs et leurs droits.
Gros bémol du produit : tout fonctionne en NFS => l'extension au delà d'un réseau local nécessite donc le deploiement d'une autre architecture (éventuellement avec Globus).
Le petit point negatif : peut-être un manque d'acteurs intelligents permettant de se passer d'un bon nombre de choix de configuration. Mais je ne doute pas que certains au contraire apprecieront la customisabilite de n1Ge.
Quelques adresses :
N1 Grid Engine (anglais)
Sun Grid Engnie project (anglais)
N1 Grid Engine 6 documentation (anglais)
mercredi, avril 06, 2005
Avril = qualité
Le mois d'avril sera pour moi plein de qualités... principalement de la qualité logicielle :)
Je dois mettre de côté pour un mois mes projets de moteur de recherche celui d'HPC4U. Il s'agira de définir les tests de vérification et de validation d'un middleware Grid, orienté gestion des pannes.
Je dois mettre de côté pour un mois mes projets de moteur de recherche celui d'HPC4U. Il s'agira de définir les tests de vérification et de validation d'un middleware Grid, orienté gestion des pannes.
lundi, avril 04, 2005
Moteurs : dernières nouvelles
Quelques news dans le monde des moteurs de recherche :
* ULTRALINGUA
Quel que soit le pays d’origine et donc la langue d’indexation des photos, l’ensemble des image du site seront accessibles via une recherche par mot-clé dans toutes les langues disponibles.
>>Tester la version web du traducteur Ultralingua
* DIR.COM
Le moteur de recherche 'Dir.com' développé par Free depuis deux ans refait surface (320 millions de pages indexées)
http://www.boursier.com/vals/FR/news.asp?id=132414
* YAHOO et Creative Commons
Voilà une initiative non encore étrennée par Google ou Microsoft : Yahoo! adapte son moteur Yahoo Search à un nouveau domaine de recherche. Il s’agira cette fois non de scruter aveuglément ici et là, mais de fouiller uniquement des contenu étiquetés Creative Commons (CC). D'ailleurs "Creative Commons Search" est le petit nom de cet outil idéal pour de futurs travaux (école, dossier, etc.).
http://www.pcinpact.com/actu/newsg/20312.htm
* ULTRALINGUA
Quel que soit le pays d’origine et donc la langue d’indexation des photos, l’ensemble des image du site seront accessibles via une recherche par mot-clé dans toutes les langues disponibles.
>>Tester la version web du traducteur Ultralingua
* DIR.COM
Le moteur de recherche 'Dir.com' développé par Free depuis deux ans refait surface (320 millions de pages indexées)
http://www.boursier.com/vals/FR/news.asp?id=132414
* YAHOO et Creative Commons
Voilà une initiative non encore étrennée par Google ou Microsoft : Yahoo! adapte son moteur Yahoo Search à un nouveau domaine de recherche. Il s’agira cette fois non de scruter aveuglément ici et là, mais de fouiller uniquement des contenu étiquetés Creative Commons (CC). D'ailleurs "Creative Commons Search" est le petit nom de cet outil idéal pour de futurs travaux (école, dossier, etc.).
http://www.pcinpact.com/actu/newsg/20312.htm
vendredi, avril 01, 2005
Les communautés d'intérêt
Phénomène (+-nouveau) à la mode dans le domaine des moteurs de recherche : les communautés d'intérêt méritait bien un petit article...
Tandis que l'on approche des limites de la recherche textuelle (Google, MSN Search) des documents webs, et que les moteurs sémantiques semblent bien complexes à mettre en oeuvre, certains voient en ces communautés une façon simple, économique et moderne de passer de l'échelon du référencement des informations à celui de partage des connaissances.
L'intérêt est flagrant : pourquoi ne pas utiliser le cerveau humain pour établir le ranking des pages webs. Effectivement, l'idée est bonne, mais pas sans difficultés...
Sans entrer dans les détails, les difficultés résident dans la facon de mettre en oeuvre une stratégie permettant d'obtenir de bons résultats.
Parmis d'autres choses, je pense qu'il serait par exemple très utile de distinguer deux groupements majeurs :
- les communautés qui recherchent la meme chose : les résultats doivent être donnés en fonction de ce que ces personnes recherches
- les communautés qui connaissent la meme chose : un informaticien établira plus facilement un classement de site parlant des failles de course critique qu'un biologiste !
Pour conclure, j'adhère complètement au système des communautés d'intérêt, mais je ne suis enthousiaste face à aucun des projets qui m'ont été présenté...
Aussi, dans quelques mois, aurai-je peut-etre l'occasion de vous présenter ma trouvaille en cette matière.
Tandis que l'on approche des limites de la recherche textuelle (Google, MSN Search) des documents webs, et que les moteurs sémantiques semblent bien complexes à mettre en oeuvre, certains voient en ces communautés une façon simple, économique et moderne de passer de l'échelon du référencement des informations à celui de partage des connaissances.
L'intérêt est flagrant : pourquoi ne pas utiliser le cerveau humain pour établir le ranking des pages webs. Effectivement, l'idée est bonne, mais pas sans difficultés...
Sans entrer dans les détails, les difficultés résident dans la facon de mettre en oeuvre une stratégie permettant d'obtenir de bons résultats.
Parmis d'autres choses, je pense qu'il serait par exemple très utile de distinguer deux groupements majeurs :
- les communautés qui recherchent la meme chose : les résultats doivent être donnés en fonction de ce que ces personnes recherches
- les communautés qui connaissent la meme chose : un informaticien établira plus facilement un classement de site parlant des failles de course critique qu'un biologiste !
Pour conclure, j'adhère complètement au système des communautés d'intérêt, mais je ne suis enthousiaste face à aucun des projets qui m'ont été présenté...
Aussi, dans quelques mois, aurai-je peut-etre l'occasion de vous présenter ma trouvaille en cette matière.
mardi, mars 29, 2005
Lucene versus SGBD
La bataille n'est pas courante... néanmoins, toute connaisseur de Nutch désireux d'employer l'indexeur Lucene dans toute sa potentialité sera confronté à la question suivante :
Quand faut-il utiliser une SGBD plutot que Lucene.
Prenons un cas concret : réaliser un compteur de "mots de recherche" pour Nutch.
Pour l'instant je m'accorde aux choses suivantes :
* Lucene est un indexeur, c'est à dire un outil permettant de retrouver au plus vite une entrée d'index associée à des données.
* MySQL (ou autres SGBD) est un système de gestion de base de données. C'est à dire un ensemble d'index englobant l'implémentation d'un ensemble d'opération sans se préoccuper des problemes sous-jacents (multi-ultisateurs, synchronisation, lecture/écriture).
A mes yeux, Lucene est théoriquement plus lent lorsque les scéances d'écriture se succèdent aux étapes de lecture. J'aurais tendance à affirmer que Lucene est un indexeur exclusivement consacré à un construction d'index suivie d'un ensemble de lecture. Ainsi, si l'on veut implémenter un outil de statistique qui incrémente une entrée de l'index à chaque fois que l'occurence est enregistrée sur le moteur, j'aurais tendance à dire que les performances devraient etre moins bonnes.
En pratique cela n' a pas vraiment l'air d'etre le cas.
Vous meme, avez vous été confronté à cet grave question existentielle : Lucene ou SGBD ?
Quand faut-il utiliser une SGBD plutot que Lucene.
Prenons un cas concret : réaliser un compteur de "mots de recherche" pour Nutch.
Pour l'instant je m'accorde aux choses suivantes :
* Lucene est un indexeur, c'est à dire un outil permettant de retrouver au plus vite une entrée d'index associée à des données.
* MySQL (ou autres SGBD) est un système de gestion de base de données. C'est à dire un ensemble d'index englobant l'implémentation d'un ensemble d'opération sans se préoccuper des problemes sous-jacents (multi-ultisateurs, synchronisation, lecture/écriture).
A mes yeux, Lucene est théoriquement plus lent lorsque les scéances d'écriture se succèdent aux étapes de lecture. J'aurais tendance à affirmer que Lucene est un indexeur exclusivement consacré à un construction d'index suivie d'un ensemble de lecture. Ainsi, si l'on veut implémenter un outil de statistique qui incrémente une entrée de l'index à chaque fois que l'occurence est enregistrée sur le moteur, j'aurais tendance à dire que les performances devraient etre moins bonnes.
En pratique cela n' a pas vraiment l'air d'etre le cas.
Vous meme, avez vous été confronté à cet grave question existentielle : Lucene ou SGBD ?
jeudi, mars 24, 2005
Algorithme de Ranking à code ouvert
Certains se demandent : n'est-ce pas dangereux de présenter en open-source l'algorithme de ranking utilisé pour un moteur de recherche. Je parle ici du projet Nutch...
Sans vouloir copier Doug Cutting, voici quelques réflexions intéressantes :
Sans vouloir copier Doug Cutting, voici quelques réflexions intéressantes :
- Google qui garde pourtant son algorithme secret, n'empêche pas les webmasters habiles de monter leurs rankings.
- Rien n'empêche les utilisateurs du projet Nutch de customiser l'algorithme de ranking (ce qui est chose facile) et de ne pas publier le code de cet algorithme.
- Annoncer l'algorithme, et pour peu, dans un projet open-source, permet de plus facilement les failles de la méthode employée. Cela permettra à plus long terme, d'obtenir un algorithme plus fiable, plus performant, moins influencés par les techniques diverses de boost de ranking.
En conclusion, je crois que la publication, dans le cadre du projet Nutch, est une très bonne chose.
mercredi, mars 23, 2005
Tutoriel de Nutch sur Frutch
Je suis inscrit désormais sur le groupe Frutch , c'est-à-dire le groupe de Nutch francophone.
Nutch est un moteur de recherche open-source plein d'avenir. La version 0.6 donnait déjà de très bon résultat, on attend avec impatience la prochaine version stable permettant de gérer pas mal de choses supplémentaires.
En matière de moteur de recherche, je pense que le projet Nutch est sans doute la meilleure chose qui soit arrivée depuis pas mal d'année.
Notons au passage que Nutch utilise l'indexeur Lucene dont le principal développeur Doug Cutting, est le principal acteur du projet Nutch.
J'ai publié ma traduction avec commentaires du tutoriel de Nutch sur le Wiki de Frutch : tutoriel de Nutch
Nutch est un moteur de recherche open-source plein d'avenir. La version 0.6 donnait déjà de très bon résultat, on attend avec impatience la prochaine version stable permettant de gérer pas mal de choses supplémentaires.
En matière de moteur de recherche, je pense que le projet Nutch est sans doute la meilleure chose qui soit arrivée depuis pas mal d'année.
Notons au passage que Nutch utilise l'indexeur Lucene dont le principal développeur Doug Cutting, est le principal acteur du projet Nutch.
J'ai publié ma traduction avec commentaires du tutoriel de Nutch sur le Wiki de Frutch : tutoriel de Nutch
Crawling distribué
Suite à une discussion concernant l'intérêt du crawling distribué pour un moteur de recherche voici ma réponse suite au message suivant :
En fait, ce que j'entends par crawling P2P, c'est d'utiliser un réseau
de machine pour effectuer le téléchargement des pages et en effectuer
l'indexation. En fait à bien y réfléchir, ça serait plus une approche à
la Seti@home. Le terme P2P n'est peut-être pas très approprié.
Ce qui caractérise le P2P, c'est l'indétermination de la relation client-serveur entre les pairs. Donc ici il s'agit plus généralement de technologie GRID.
L'intérêt à fetcher (télécharger) et indexer les pages est moindre : les pages que les noeuds de la grille auront indexées ainsi que leur contenu devront inévitablement être envoyé au serveur de recherche, et la bande passante gagnée sera donc reperdue... (mis à part comme l'a souligné Jerome dans l'un de ses articles, si la quantité de données envoyée au final est plus faible que la quantité engloutie par les noeuds).
Dans tous les cas, la bande passante gagnée est tellement minime que les efforts déployés pour ce faible gain sont minimes...
Pour aller dans ton sens néanmoins, je dirai que tous les grands noms du domaine des moteurs de recherche, Doug Cutting compris, sont très intéressés par une expérimentation de la chose, afin de confirmer qu'effectivement, le crawling distribué est inutile.
Maintenant, si tu étends le crawling distribué, à une recherche distribuée : tu n'as plus besoin de transférer le contenu des pages, mais uniquement tes index. Néanmoins dans ce cas, la rapidité du service de recherche est directement lié aux temps de latence des différents noeuds de recherche.
Si un noeud est très lent, certains résultats de recherche peuvent durer très longtemps. Dans tous les cas, la rapidité d'une seconde de Google ne sera jamais atteinte.
A cela on peut répondre que l'on peut dupliquer les index, mais à quel nombre ? Le système ne deviendrait que fiable à 99 % que lorsque le nombre de noeuds deviendrait très important (et le nombre de duplication également). Reste alors à implémenter des mécanismes permettant de gérer les duplications afin de lutter contre les problemes de pannes ou lenteur de noeuds.
Pour conclure sur cette dernière remarque, je dirai que tous les experts en GRID s'accordent sur une chose : là où il faut éviter les Desktop Grid (on peut les appeler des Peer to peer grid si l'on veut) c'est bien lorsqu'une fiabilité en vitesse réseau est demandée... La seule issue possible est un GRID de machine puissante, et dans ce cas là, nous nous retrouvons purement et simplement avec une architecture typiquement à la Google.
Salutations.
Christophe Noel
Information Retrieval & Grid Systems
CETIC
Charleroi, Belgique
Lucene Fuzzy Query
Cet article naît d'une incohérence déconcertante apparue lorsque j'ai utilisé pour la première fois les "fuzzy query" de Lucene.
Les fuzzy query permettent d'obtenir des résultats de recherche sur des mots "proches" les uns des autres. Le concept de proximité est issu ici de la notion de distance entre mot, correspondant à l'algorithme de Levenshtein.
Une distance de 1 entre deux mots correspond à soit un échange de lettre, un retrait ou un ajout de lettre pour passer de la premiere occurence de mot à l'autre.
La méthode FuzzyQuery(Term, float, int), permet de créer une FuzzyQuery pour un taux d'erreur donné en float, et un préfixe de longueur donné en int.
Si la longueur de préfixe est de 2, Lucene va alors parcourir tous les mots commencant par ce préfrixe et calculer les distances par rapport au terme donné.
Ce que le bouquin Lucene in action ne dit pas, c'est que le taux d'erreur de 1 - (distance / longueur de mot) n'est pas calcul sur le mot entier, mais uniquement sur le suffixe.
Ce point de détail expliquera bien des comportements anormaux constaté lors de vos premiers tests.
Les fuzzy query permettent d'obtenir des résultats de recherche sur des mots "proches" les uns des autres. Le concept de proximité est issu ici de la notion de distance entre mot, correspondant à l'algorithme de Levenshtein.
Une distance de 1 entre deux mots correspond à soit un échange de lettre, un retrait ou un ajout de lettre pour passer de la premiere occurence de mot à l'autre.
La méthode FuzzyQuery(Term, float, int), permet de créer une FuzzyQuery pour un taux d'erreur donné en float, et un préfixe de longueur donné en int.
Si la longueur de préfixe est de 2, Lucene va alors parcourir tous les mots commencant par ce préfrixe et calculer les distances par rapport au terme donné.
Ce que le bouquin Lucene in action ne dit pas, c'est que le taux d'erreur de 1 - (distance / longueur de mot) n'est pas calcul sur le mot entier, mais uniquement sur le suffixe.
Ce point de détail expliquera bien des comportements anormaux constaté lors de vos premiers tests.
mardi, mars 22, 2005
Nouvelle guitare folk
Ce week-end j'ai eu la joie de découvrir le son d'une magnifique guitare folk XP dans les tons d'un beau rouge bordeau. Tout ceci grâce à ma merveilleuse amoureuse à qui j'envois plein de bisous ! ;)
Vive les gammes penthatoniques et autres joyeusetés pour terminer chacune des dures journées de labeurs passées derrière les machines infernales...
Vive les gammes penthatoniques et autres joyeusetés pour terminer chacune des dures journées de labeurs passées derrière les machines infernales...
Factbites : moteur encyclopédique
Factbites est un moteur de recherche basé sur une encyclopédie.
Tout d'abord, je vous recommande les commentaires d'Olivier Ertzscheid : commentaires
Ce moteur de recherche est intéressant pour les recherches encyclopédiques. Je ne m'étenderai pas sur le sujet, car je pense que son intérêt est moindre pour le domaine de la recherche.Toutefois je noterai une petite caractéristique élégante : les pages de résultats sont affichées de façon plus consistante. A la place d'un extrait ("summary") à la Google pour chaque page, trois phrases de la page HTML contenant les mots de recherche sont affichés. Ce ne sont pas des phrases choisies au hazard, mais bien des extraits sémantiquement intéressants. Au final, il est plus facile de se faire une idée des pages affichées dans les résultats.
Tout d'abord, je vous recommande les commentaires d'Olivier Ertzscheid : commentaires
Ce moteur de recherche est intéressant pour les recherches encyclopédiques. Je ne m'étenderai pas sur le sujet, car je pense que son intérêt est moindre pour le domaine de la recherche.Toutefois je noterai une petite caractéristique élégante : les pages de résultats sont affichées de façon plus consistante. A la place d'un extrait ("summary") à la Google pour chaque page, trois phrases de la page HTML contenant les mots de recherche sont affichés. Ce ne sont pas des phrases choisies au hazard, mais bien des extraits sémantiquement intéressants. Au final, il est plus facile de se faire une idée des pages affichées dans les résultats.
Création
Et bien ce post sera le premier d'une sans doute longue série de commentaires au sujet de mes recherches et découverte en matière de technologies de l'information.
Le temps de me familiariser avec ce nouveau phénomène de mode qu'est le blog.
Le temps de me familiariser avec ce nouveau phénomène de mode qu'est le blog.
Inscription à :
Articles (Atom)