Bonjour,
Dans le cadre d'un projet pour mes cours, je dois faire avec un ami un petit moteur de recherche. Nous avons donc travaillé, rendu nos étapes en temps et en heures et nous avons toujours obtenu des notes satisfaisantes ( pour l'instant, une moyenne de 17/20)
Lors de la dernière étape, nous devions faire des test de plus grande envergure que précédemment et indexer beaucoup plus de pages web que pour les étapes précédentes, et là, c'est le drame. On utilise beaucoup trop de mémoire...
Là ou certains groupes ne consomment jamais plus de 512M de mémoire, notre travail en consomme plus d'un giga et demi.
Et donc, j'en viens à la raison de ce post. Serait-ce possible que quelqu'un jette un coup d'œil sur notre code afin de tenter de trouver là ou se trouverais notre erreur?
Le travail en question à déjà été remis, mais, ça m'agace de ne pas savoir ou notre erreur réside. J'en ai parlé à l'assistant et il est d'accord pour que je demande de l'aide, mais bien entendu, c'est à mon coéquipier et moi de corriger l'erreur
Un peu d'explication sur comment on a géré notre code.
Pour faire une recherche sur un site donné, cela se passe en deux temps: l'indexation puis ensuite la recherche. Ce qui pose problème, c'est la création de l'index.
La structure utilisée pour l'index est une HashMap qui contient comme clé un mot, et comme valeur un arbre dans lequel on met une référence vers chaque url contenant ce mot, ainsi que le nombre de fois que ce mot est présent dans la page. ( Avant, nous utilisions une hashmap à la place d'arbres, mais en changeant de cette manière (remplacement hashmap -> arbre) on a gagné de l'espace mémoire )
Tout ceci est gardé en mémoire centrale, car c'est une demande explicite du professeur.
Le parcours du web est effectué par différents robots (thread). Chacun d'entre eux possède sa propre file d'attente d'url à traiter. (La distribution des charges entre les différents robots n'est pas optimale).
On parcourt le web en fonction de trois paramètres: une page de départ, un domaine de restriction (par exemple: ".com") et une profondeur maximale.
Pour vérifier que l'on ne parcourt pas plusieurs fois la même page, un hashSet est créé contenant chaque URL parcourue.
Les énoncés sont disponibles à cette adresse
Bon, je pense avoir expliqué le principal, si vous avez d'autres questions, je suis à votre disposition.
D'avance, merci
Partager