-
Notifications
You must be signed in to change notification settings - Fork 59
Session raw discussion 3
• Un objet URL ⁃ dé/sérialise ⁃ tokenisation ⁃ gestion des exceptions
Définition Web-entity:
- liste d'URL correspondant au même objet - du point de vue de l'utilisateur : - les URL sont ajoutées ou enlevées à la main - "cette URL c'est ça, elle pointe sur ça" - toute URL insérée dans le système appartient forcément à une Web Entity - il existe une webentité "reste du monde"
Si l'utilisateur veut faire remonter une URL dans l'arbre, c'est plus compliqué (manuel)..
Workflow
- l'utilisateur:
- ajoute des URL
- le crawler :
- lors d'une itération de crawl : - pour chaque lien trouvé, il récupère une web-entité - cette web-entitée est ajoutée au crawl, mais ne sera traité qu'à l'itération suivante
MEMORY STRUCTURE lookupWebEntity (..) :
- lookup, regarde si match avec une entité existante - si pas de web entité, retourne une exception
createWebEntity(..) :
- créé une nouvelle web entity - (re)créer les liens entre les URL stemmées
Thomas: suggestion, avoir une web entité "racine" (ex. http://), sur laquelle pointe les liens vers des entités non stockées
Thomas: il faut une méthode intelligente pour compter les liens Jérôme: problème de la page qui a 1M de fois le même lien (il faut compter qu'une fois)
Page-level entity:
- elle est "stemmée" (juste tokenizée)
Règles de stemming :
- On enlève le niveau fichier. - - Paramètres : - nombre de passes maxi
Problème des cas spéciaux :
Thomas: Les cas spéciaux devraient être gérés en dehors du moteur (module de gestion d'exception) Cam: chez linkfluence, ils utilisent des regexs pour les cas spéciaux "attention, à partir de blog.php/ utiliser telle règle.." Jérôme: il faudrait un module de normalisation d'URL en amont
Problème des page-level web entities:
- Il ne doit rien avoir en dessous d'une page, à part les queries? - Exemple des blog id: pages gérées comme un stem - Si on insère un un élément non lemmatisé, c'est que c'est juste une page - une URL non stemmée ne peut pas avoir de fils
Exemple des blog id: pages gérées comme un stem Exemple de radio france: on pourrait avoir une règle de style "si en dessous de tel chemin, je ne stemme pas"
- pose le soucis des alias - il pourrait y avoir des collisions (a.php?a=1&b=2 collision avec une web entité différente en ?b=2&a=1) - sur certains sites, le chemin n'a carrément aucune importance (a/b/c/d?id=xxx, seul l'ID a une importance, le reste est ignoré) - genre le site asos
index en mémoire
Problème de comptage des liens : mettre en place d'un bloom filter
On ne garde pas la profondeur des liens en terme de clics car on ne peut pas....
Il est noté l'importance des scénarios pour spécifier les APIs
liste des Specifications à détailler :
Web entity :
id nom liste des stems branch metadata user : (cat, set, free + champs) metadata System
Web entity -> URLS :
id web entity id URLs
URLs:
id = URL ? stemed ? (tronquer) url serialized metadata system
URLS -> URLS
id URL source id URL target weight metadata system (date)
Comptage des liens ? si pas dans bloom filter sur les urls non stemmés incrémente le weight
le nom : JacomyTree API
URLLinks add remove list WELinks remove list getWEGraph() getURLGraph()
UI ---- Vortex Core ----- Crawl
| Thrift | JT
UI :
Core :
scheduler bouche les trous web entity creation rules
JT :
voir ci-dessus
Crawler :
récupération des liens sortant en profondeur 1