is strictly prohibited indexer • adapter la représentation des données aux requêtes changer l’ordre des données dupliquer si besoin mémoire ou disque dur suivant les accès etc. • souvent plus rapide qu’on ne croit 220 GB/h pour des documents de 4KB http://people.apache.org/~mikemccand/lucenebench/ indexing.html
is strictly prohibited créons un index • cahier des charges recherche de livres recherche exacte ou par intervalles sur les descriptions en mémoire sql index term data Lucene in action Databases lucene
is strictly prohibited créons un index (2) Lucene term 2 3 Lucene in action Databases 0 1 data index 0 1 0,1 0,1 0 0 Segment doc id document term ordinal terms dict postings list sql 4 1 • et si on utilisait de la recherche binaire plutôt? !
is strictly prohibited avantages/inconvénients • avantages écritures séquentielles indexation par lots très rapide données immuables : aucun verrou termes identifiés par un ordinal; utile pour: tris facettes intersections efficaces • inconvénient pas de temps réel: mises à jour document par document coûteuses
is strictly prohibited Dictionnaire de termes • index en mémoire du dictionnaire de termes en mémoire dans un FST ne stocke que les préfixes l/4 u c r y/3 b/2 r a/1 br = 2 brac = 3 luc = 4 lyr = 7
is strictly prohibited Dictionnaire de termes (2) • dictionnaire complet des termes stocké sur disque de façon ordonnée compressé en ne répétant pas les préfixes “block tree” [prefix=luc] a, freq=1, offset=101 as, freq=1, offset=149 ene, freq=9, offset=205 ky, freq=7, offset=260 rative, freq=5, offset=323 Jump here Not found Not found Found
is strictly prohibited Postings lists • identifiants des documents stockés de façon ordonnée compressés: encodage des différences séparation en blocs de taille N (128 en pratique) stockage des blocs sur aussi peu de bits que nécessaire dernières valeurs stockées avec le format vInt 1,3,4,6,8,20,22,26,30,31 1,2,1,2,2,12,2,4,4,1 [1,2,1,2] [2,12,2,4] 4, 1 2 bits par valeur 4 bits par valeur example avec N=4 vInt
is strictly prohibited et voilà! • accès disque 2 lectures aléatoires par champ interrogé 1 lecture aléatoire par document retourné ! optimisé pour les termes dont la fréquence est 1: 1 lecture aléatoire par champ interrogé au lieu de 2 • dictionnaire de termes et postings lists tiennent souvent dans le cache du système d’exploitation ! ! ! !