Skip to content

Session raw discussion 3

jrault edited this page Dec 21, 2012 · 1 revision

• 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