Le Forum Non Officiel de la DEDIBOX
Vous n'êtes pas identifié.
Bonjour à tous.
Je souhaite créer un "vrai" moteur de recherche avec son propre crawler, le crawler c'est le programme qui va indexer toutes les pages appartenant aux sites indexés, et se charge aussi de mettre a jour le contenu des pages déja indexées. Je ne vais pas concurrencer Google, donc je mise sur la langue Arabe où j'aurai plus de chance de trouver des adeptes de mon moteur de recherche
Pour l'instant tout fonctionne bien, j'ai pris en compte la possibilité d'utiliser des operateurs logiques (and/or/not). Et aussi l'utilisation de + et - si on veut que les mots recherchés existent ou pas dans les resultant (+ = and, - = not, rien = or). Reste a faire, un systeme de cache des resultats de recherche du meme jour (semaine ou mois) pour accelerer l'affichage des resultats avec les memes mots clés. Je suppose que meme google "cache" les resultats de recherche puisque ca donne toujours le meme resultat avec les memes mots clés.
Je mise beaucoup sur l'utilisation de mon moteur de recherche par les webmasters qui m'aideront beaucoup a le faire connaitre, donc je voudrais ajouter des fonctionnalités des moteurs de recherche modernes du genre
- link:www.site.com ou lien:www.site.com qui permet de trouver tous les sites qui contiennent un lien vers www.site.com
- site:www.site.com mot clé qui permet de chercher des mot clés dans www.site.com
Les probleme qui se posent :
- Comment savoir que les techniques link:www.site.com et site:www.site.com mot clé sont (ou ne sont pas) brevetées ? faut-il avoir une autorisation pour les utiliser ?
- Où puis-je trouver une liste de mots clés a bannir (sites pour adultes, pedophiles et compagnie...)
J'apprecie toute aide.
Hors ligne
JalaL a écrit:
Bonjour à tous.
Je souhaite créer un "vrai" moteur de recherche avec son propre crawler, le crawler c'est le programme qui va indexer toutes les pages appartenant aux sites indexés, et se charge aussi de mettre a jour le contenu des pages déja indexées. Je ne vais pas concurrencer Google, donc je mise sur la langue Arabe où j'aurai plus de chance de trouver des adeptes de mon moteur de recherche
Pour l'instant tout fonctionne bien, j'ai pris en compte la possibilité d'utiliser des operateurs logiques (and/or/not). Et aussi l'utilisation de + et - si on veut que les mots recherchés existent ou pas dans les resultant (+ = and, - = not, rien = or). Reste a faire, un systeme de cache des resultats de recherche du meme jour (semaine ou mois) pour accelerer l'affichage des resultats avec les memes mots clés. Je suppose que meme google "cache" les resultats de recherche puisque ca donne toujours le meme resultat avec les memes mots clés.
Je mise beaucoup sur l'utilisation de mon moteur de recherche par les webmasters qui m'aideront beaucoup a le faire connaitre, donc je voudrais ajouter des fonctionnalités des moteurs de recherche modernes du genre
- link:www.site.com ou lien:www.site.com qui permet de trouver tous les sites qui contiennent un lien vers www.site.com
- site:www.site.com mot clé qui permet de chercher des mot clés dans www.site.com
Les probleme qui se posent :
- Comment savoir que les techniques link:www.site.com et site:www.site.com mot clé sont (ou ne sont pas) brevetées ? faut-il avoir une autorisation pour les utiliser ?
- Où puis-je trouver une liste de mots clés a bannir (sites pour adultes, pedophiles et compagnie...)
J'apprecie toute aide.
Salut,
Est-ce que tu veu tout développer toi meme ou t'appuyer sur quelque chose d'existant ? il y a l'excellent projet nutch qui me semble une très bonne base pour un moteur de recherche ( de la fondation mozilla ) en java qui a un crawler très performant ? Si tu as des questions sur les tehnologies à utiliser, n'hésite pas ( jai fé un master sur ce sujet )
@+
Hors ligne
En fait je fais ce projet pour apprendre essentiellement. J'ai ecrit tous les "algorithmes" si je me permet de les appeller comme ca... c'est vrai qu'en ce moment j'essaye de faire vite pour lancer le moteur, pour le tester a grande echelle.
Il restera quelques optimisations sur l'algorithme d'indexation du crawler et celui de la recherche et du classement des resultats selon leur pertinence. En tout cas, le systeme de cache des resultats permettera des affichages rapides des resultats s'il s'avere que mes algo sont trop lents.
Hors ligne
JalaL a écrit:
Les probleme qui se posent :
- Comment savoir que les techniques link:www.site.com et site:www.site.com mot clé sont (ou ne sont pas) brevetées ? faut-il avoir une autorisation pour les utiliser ?
Matter sur le site de l'US Patent Office ?
C'est pas forcément la première question qui me serait venue à l'esprit. Surtout si tu envisages pas de fonder ton éventuelle société aux US (un éventuel brevet là dessus ne serait pas valable en Europe, dans la situation actuelle).
JalaL a écrit:
- Où puis-je trouver une liste de mots clés a bannir (sites pour adultes, pedophiles et compagnie...)
Ca me semble être une mauvaise solution. Tu risques de te retrouver à bloquer des sites légitimes (par exemple les associations de défense, ou les pages d'information de la police, articles de presse...).
Hors ligne
JalaL a écrit:
En fait je fais ce projet pour apprendre essentiellement. J'ai ecrit tous les "algorithmes" si je me permet de les appeller comme ca... c'est vrai qu'en ce moment j'essaye de faire vite pour lancer le moteur, pour le tester a grande echelle.
Il restera quelques optimisations sur l'algorithme d'indexation du crawler et celui de la recherche et du classement des resultats selon leur pertinence. En tout cas, le systeme de cache des resultats permettera des affichages rapides des resultats s'il s'avere que mes algo sont trop lents.
Tu vas écrire ca dans quel langage, C, tcl, perl ??? tas va utiliser quel technique en full text ou algo spécial ?
Hors ligne
J'utilise perl pour le crawler, et php pour le moteur (la consultation), j'avais commencé avec un algo en full text, donc je stoquais le contenu html de chaque page sans les balises html (pour economiser l'espace), le titre de la page egalement. et je faisais une recherche dans le texte uniquement avec comptage des mots clés trouvés...
Maintenant que je veux rendre mes resultats plus pertinents, je veux chercher dans l'url et le titre de la page egalement : un resultat qui contient le maximum de mots recherchés (mots uniques)
1. dans le titre de la page est plus pertinent
2. dans l'url est moins pertinent que 1
3. dans le corps de la page est moins pertinent que 1 et 2
Avec un systeme de notes pour chaque resultat trouvé selon le nombre de mots clés trouvé dans chaque niveau de pertinence me donnera une note finale pour chaque resultat. Je peux donc trier tous les resultats et afficher les plus pertinents en premier.
J'utilise donc une table qui repertorie tous les mots existants avec leurs identifiants. Et une autre table pour stocker les infos relatives a chaque mot dans chaque page indexée (id_mot, id_page, existe_dans_le_titre, existe_dans_l_url, existe_dans_l_html)
A prioris il n'y aura pas de probleme pour coder les fonctions qui cherchent, par contre ca va etre dur pour les fonctions qui crawlent.
Hors ligne
Ouais super cest bien le perl, je te pose cette question car jai applique mon master dans un site : http://www.lookdir.net
En php pour la consultation, du java pour le crawler, mais nous crawlons que les urls et cest un moteur de sites et non de pages, indexe en full text sur les metas avec en plus un algo qui calcul la pertinence en fonction des requetes que les utilisateurs font.
Le probleme majeur cest de virer les urls qui font du spamming, cest pour ca que notre crawler ne ramene pas trop de chose car il y a un filtre anti spam et anti sites de boules mais malgres ca il y en a quelqu'un qui passe ken meme.
Bref bon courrage
Hors ligne
Je vais essayer de mettre une page dans l'admin qui montre les sites les plus indexes (nombre de pages), les plus consultés, ca va me permetter de virer ceux qui n'ont rien a faire dans le moteur surtout s'il y en a un qui prend trop de place dans la base de données.
J'avais deja codé un annuaire avec arborescence infinie... qui crawle les titres et meta de la page, il n'a pas eu le success que je lui souhaitais...
Le crawler va tourner sur un serveur chez moi, et la base de données sera synchronisée tous les 2-3 jours. D'où l'interet du cache des resultats, quisqu'il ne changeront pas pour la meme requette avant la prochaine synchro.
Hors ligne
JalaL a écrit:
Je vais essayer de mettre une page dans l'admin qui montre les sites les plus indexes (nombre de pages), les plus consultés, ca va me permetter de virer ceux qui n'ont rien a faire dans le moteur surtout s'il y en a un qui prend trop de place dans la base de données.
J'avais deja codé un annuaire avec arborescence infinie... qui crawle les titres et meta de la page, il n'a pas eu le success que je lui souhaitais...
Le crawler va tourner sur un serveur chez moi, et la base de données sera synchronisée tous les 2-3 jours. D'où l'interet du cache des resultats, quisqu'il ne changeront pas pour la meme requette avant la prochaine synchro.
Ouais pour ton cas cest pas mal je pense, mais fé attention en crawlant le web, y a la pollution des sites qui spamment, les sites satellites, les sites morts ou les sites avec des liens invisibles ( je ne sais + le nom ) enfin bref cest bien polluer le net :ph34r:
Hors ligne
L'idée d'un moteur de recherche est bien, mais j'ai eu une idée récement, ça serait de créer un plug-in firefox (et autres navigateurs) qui enregistrerait et scannerais les sites consultés par les utilisateurs, le tout rapporté automatiquement de temps en temps au moteur de recherche.
Non?
XaT
Hors ligne
Tu veux dire que je risque d'etre bloqué par un script anti aspirateur ? Je ne pense que ce genre de techniques est toujours d'actualité, sinon ca bloquerait Google et autres crawlers qui suivent tous les liens d'une page... Je vais reflechir à comment gérer les fichiers robots.txt et les meta robot dans les pages html.
XaTriX a écrit:
L'idée d'un moteur de recherche est bien, mais j'ai eu une idée récement, ça serait de créer un plug-in firefox (et autres navigateurs) qui enregistrerait et scannerais les sites consultés par les utilisateurs, le tout rapporté automatiquement de temps en temps au moteur de recherche.
Non?
XaT
Un spyware en quelque sorte ![]()
Je crois que ca existe deja ce genre de plug-in, alexa par exemple
Hors ligne
Non pas spyware, avec autorisations de la personne et possibilité de filtrage, etc. :-]
Si ça existe déjà ![]()
XaT ^^
Hors ligne
Google utilise deja cette technique dans les annonces AdSence. Chaque fois qu'un internaute ouvre une page inconnue par Google contenant une annonce AdSence, Google la visite presque instantanement pour chercher les mots clés qu'elle contient, pour qu'il puisse afficher des annonces AdSence compatibles avec le contenu de la page, et en meme temps il la rajoute dans son moteur de recherche.
Moi je vois cette technique autrement, par exemple si chaque webmaster veut que ses nouvelles pages soient indexées tres rapidement, je pourrais proposer une sorte de banniere comme celle d'Alexa donnant quelques infos sur le site (nombre de hits, nombre de liens indexés, nombre de backlinks...)
La banniere sera generée grace à un script php (et mise en cache bien sur), le script php va envoyer la banniere et marquera le Referrer inconnu qui a demandé la banniere pour etre crawlé...
Revenons au stockage des pages html, eh oui je suis obligé de les conserver malgré l'algo basé sur les mots clés. J'en aurai besoin pour afficher un apperçu du contenu de la page avec highlight des mot clés recherchés (comme Google). J'ai trouvé une astuce qui permet de compresser leur contenu et le stocker dans la base de données. Je n'aurai pas a decompresser leur contenu pendant la recherche, mais seulement a l'affichage des resultats... donc ca n'aura aucun impact sur la recherche, ca permet d'economiser plus de 60% de l'espace utilisé par l'html non compressé (et sans balises html).
Pour compresser :
INSERT INTO table (html, ...) VALUES (COMPRESS($html), ...)
Pour decompresser
SELECT UNCOMPRESS(html) FROM table WHERE ...
Dernière modification par JalaL (2006-07-27 03:06:12)
Hors ligne
JalaL a écrit:
Pour compresser :
INSERT INTO table (html, ...) VALUES (COMPRESS($html), ...)
Pour decompresser
SELECT UNCOMPRESS(html) FROM table WHERE ...
Je te coseille postgresql pour ce genre de requete, javais deja testé avec mysql les performances sont pas terribles sur une 10 ene de resultats par exemple, avc postgresql ca dechire tout. Sinon cest une bonne idée. Moi je suis en train de faire un script qui fait des screenshot des sites tout seul, mais cest pas évident, il faut installer l'interface graphique pour faire ca ou alors je vois pas comment.
Hors ligne
Tu veux dire quoi par site de spam ? J'ai decouvert un truc aujourd'hui, il y a plein de sosietés specialisées dans l'achat de noms de domaines morts pour afficher de la pub... j'en ai viré quelques dixaines, reste a verifier tous les sites un par un. La plupart des webmasters qui echangent des liens avec d'autres ne verifient pas toujours si les liens sont toujours disponibles, du coup les crawlers tombent sur autre chose. Ce genre de sites ralenti le crawling puisque le crawler s'atarde sur un site inutile...
Je vais essayer de remedier a ca, soit par un bouton de "report de lien mort" soit par une liste des sites les plus visités avec possibilité de supprimer
A propos de ton script de screenshot, essaye de contacter Thumbzor.com il te donnetont un coup de main peut etre, sinon utilise leur script c'est gratuit.
Dernière modification par JalaL (2006-07-28 18:58:25)
Hors ligne
Pour les "faux domaines", c'est une plaie. Il semblerait d'ailleurs que ce soit la majorité des domaines enregistrés. Et c'est d'autant plus volatile que certains profitent de la possibilité de se faire rembourser un domaine sous 5 jours pour "tester" des domaines et voir s'ils attirent du monde.
Sinon, le spamdexing c'est l'ensemble des techniques pour augmenter la visibilité d'un site: des div cachés dans la page, bourrés de mots clés. Des tonnes de fausses pages qui se linkent entre elles. Répétitions multiples de la même page sous différentes URL.... Bref, plein de techniques pour tromper les bots d'analyse.
Hors ligne
J'arrete pas d'en supprimer. Le mieux c'est de trouver toutes les adresses IP des sites bannis, et les bannir automatiquement si le site en train d'etre crawlé correspond a cette IP. En général, ces gens là ont un seul serveur (par societe) et font just pointer tous les domaines vers leur IP unique. Je vais vois ce que ca va donner.
Hors ligne
Calimero a écrit:
Pour les "faux domaines", c'est une plaie. Il semblerait d'ailleurs que ce soit la majorité des domaines enregistrés. Et c'est d'autant plus volatile que certains profitent de la possibilité de se faire rembourser un domaine sous 5 jours pour "tester" des domaines et voir s'ils attirent du monde.
Sinon, le spamdexing c'est l'ensemble des techniques pour augmenter la visibilité d'un site: des div cachés dans la page, bourrés de mots clés. Des tonnes de fausses pages qui se linkent entre elles. Répétitions multiples de la même page sous différentes URL.... Bref, plein de techniques pour tromper les bots d'analyse.
Exactement les faux domaines que j'appelais sites de spam ce sont en fait des registrars ou des societes de referencment qui utilisent ses domaines inactifs pour faire du traffic ou augmenter leur pagerank artificiellement. Pour contrer cela jai indentifier manuellement une blacklist mais ce n'est pas automatique. Voila un exemple de crawl : pour 30mn de crawl je récupère en moyenne entre 50000 et 100000 urls si les conditions sont bonnes apres passage de la blacklist des sites de spam et du controle parental ( les sites de cul represente beaucoup trop de sites ) jen retire environ 5000 de bonne vu que je prends que les racines de sites ca en fait au final 400 ou 500, toi cest pas le meme cas jalal mais tu vois environ la perte et j'essaye que Lookdir.net contienne des sites de qualité et sans liens morts.
Il faut penser a vos visteurs qui ont en marre de cliquer dans le vide et de faire des recherches infructueuses. Je test également une sorte base de connaissance de requetes effectuées qui me permettront prochainement de prendre filtrer encore + les sites pourris.
Et pis je dois amélioré aussi mes algo de full text qui ont quelques problemes sur les requetes qui comportent beaucoup de mots clés...cest du travail un bon moteur.
Mais franchement entre nous je déteste les moteurs qui utilisent l'API google pour en faire leur commerce, vive les moteurs libres cela diversifie internet ![]()
Dernière modification par copyme (2006-07-28 19:30:29)
Hors ligne
Ca permettra de réduire, c'est sûr. Mais faut pas croire, y a pas qu'une seule boite avec un seul serveur. Puis méfiance quand même, on peut imaginer d'avoir de tels "faux sites" sur des hébergements mutualisés, qui partagent donc leur IP avec des sites légitimes...
Hors ligne
Calimero a écrit:
Ca permettra de réduire, c'est sûr. Mais faut pas croire, y a pas qu'une seule boite avec un seul serveur. Puis méfiance quand même, on peut imaginer d'avoir de tels "faux sites" sur des hébergements mutualisés, qui partagent donc leur IP avec des sites légitimes...
un exemple concret cest les sites genre 99-hotel-en-france.com 98-hotel-en-france.com 97-hotel-en-france.com ceux la sont terribles
Hors ligne
Il faudra du temps pour gerer tout ca... Je laisse mon crawler pomper les sites et apres je vais essayer de creer un filtre pour tout ca. Dans tous les cas, mon algo de recherche ne prend pas en compte le nombre de backlinks vers une page pour savoir si elle est pertinente ou pas. Mon moteur sera en langue Arabe et mes visiteurs ne risqueront pas de tomber sur un de ces sites de spam (en anglais/francais...)
Pour l'instant je vais me focaliser sur mon algo de recherche, il donne des resultats plus pertinents et il est plus rapide que la premiere version, il faudra quelques ameliorations. Sans oublier qu'il faudra travailler une jolie interface graphique.
En tout cas, les sites hebergés sur la meme IP et les sites qui ont le max de pages indexées (sites de spam infinis) sont des suspects potentiels, je vais jouer sur ca.
Hors ligne
Apres les premieres heures de pompage, j'ai trouvé que 99.99% des serveurs qui hebergent 1 seul faux site sont dediés aux faux sites.
Il a fallut que je crée une page qui liste tous les domaines hebergés par serveur.
Certains sites utilisent plusieurs domaines pour pointer sur le meme contenu (www.site.com/.net/.org/...), j'en garde un seul seulement pour ne pas pomper le meme contenu plusieures fois.
Certains sites utilisent des sessions pour garder une trace du visiteur, j'ai trouvé le moyen de m'en debarasser parce que le crawler peut pomper la meme page si l'identifiant de session a changé.
Hors ligne
Je viens de decouvrir un gros bug, ma fonction qui enleve les tags html etait mal codée... certes elle enleve les tags html mais elle ne met rien a la place
... du coup si mon texte se trouve dans <td>texte1</td><td>text2</td> cela donne texte1texte2 ce qui n'a absolument aucune valeur dans l'index de recherche, et la page concernée ne sera pas affichée dans le resultat si je cherche texte1 par exemple...
Je me disais bien pourquoi mon truc colle les mots... il fallait bien y reflechir et mettre un espace a la place du tag enlevé... ![]()
Dernière modification par JalaL (2006-08-11 03:28:36)
Hors ligne
JalaL a écrit:
Je viens de decouvrir un gros bug, ma fonction qui enleve les tags html etait mal codée... certes elle enleve les tags html mais elle ne met rien a la place
... du coup si mon texte se trouve dans <td>texte1</td><td>text2</td> cela donne texte1texte2 ce qui n'a absolument aucune valeur dans l'index de recherche, et la page concernée ne sera pas affichée dans le resultat si je cherche texte1 par exemple...
Je me disais bien pourquoi mon truc colle les mots... il fallait bien y reflechir et mettre un espace a la place du tag enlevé...
est ce que tas deja une url à nous donner pour qu'on voit un petit résultat ?
Hors ligne
Je viens de faire une modification sur l'algo de recherche, c'est plus rapide maintenant... impossible de decompresser les pages html dans la meme requete de recherche... techniquement c'est faisable mais la requete ne les decompresse pas, donc je suis obligé de lancer une 2eme requete pour decompresser l'html... je lance la decompression au fur et a mesure de l'affichage des pages de resultat, si je veux afficher les pages de 1 à 5 je ne suis pas obligé de decompresser toutes les pages relatives au resultat (1000 pages par exemple). Avant je decomressais tout, pour tout mettre dans le cache des resultats, mais cette solution etait trop couteuse, surtout que la mojorités des utilisateurs vont lancer une 2eme recherche s'ils ne trouve pas ce qu'ils veulent dans la 1ere page de resultat.
En plus avec les 200 000 mots collés voire plus (mots deja existants mais collés entre eux) qui ont sauté il passe moins de temps a chercher.
Voici l'url que tu peux consulter pour tester http://www.dawwer.com (dawwer = cherche en arabe)
Hors ligne