index compression search engines – ss 2009 - hpi.de · pdf fileblock compression...

11
Index Compression Search Engines – SS 2009 Sebastian Klose Vitaliy Kats

Upload: tranhanh

Post on 06-Mar-2018

220 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Index Compression Search Engines – SS 2009 - hpi.de · PDF fileBlock Compression Blöcke á 1024 Byte Blöcke werden mit 0x00 aufgefüllt Search Engines | Sebastian Klose, Vitaliy

Index Compression Search Engines – SS 2009

Sebastian Klose

Vitaliy Kats

Page 2: Index Compression Search Engines – SS 2009 - hpi.de · PDF fileBlock Compression Blöcke á 1024 Byte Blöcke werden mit 0x00 aufgefüllt Search Engines | Sebastian Klose, Vitaliy

Strategien

■  Delta Encoding oder Gap Encoding

□  1000, 1001, 1002, 1003 1000, 1, 2, 3

■  Variable Byte Encoding

□  7 Bit je Byte für Zahl, 1 Bit Continuation Bit

■  Block Compression

Search Engines | Sebastian Klose, Vitaliy Kats | 23. Juli 2009

2

Page 3: Index Compression Search Engines – SS 2009 - hpi.de · PDF fileBlock Compression Blöcke á 1024 Byte Blöcke werden mit 0x00 aufgefüllt Search Engines | Sebastian Klose, Vitaliy

Block Compression

■  Blöcke á 1024 Byte

■  Blöcke werden mit 0x00 aufgefüllt

Search Engines | Sebastian Klose, Vitaliy Kats | 23. Juli 2009

3

Quelle: Introduction to Information Retrieval

Page 4: Index Compression Search Engines – SS 2009 - hpi.de · PDF fileBlock Compression Blöcke á 1024 Byte Blöcke werden mit 0x00 aufgefüllt Search Engines | Sebastian Klose, Vitaliy

Dateiformat

■  Zwei Dateien

□  terms.dat

□  postings.dat

Search Engines | Sebastian Klose, Vitaliy Kats | 23. Juli 2009

4

Page 5: Index Compression Search Engines – SS 2009 - hpi.de · PDF fileBlock Compression Blöcke á 1024 Byte Blöcke werden mit 0x00 aufgefüllt Search Engines | Sebastian Klose, Vitaliy

terms.dat

Search Engines | Sebastian Klose, Vitaliy Kats | 23. Juli 2009

5 Block 1 Block 2 Block 3 … Block n

Länge | Term | Länge | Term | Länge | Term | Padding

Page 6: Index Compression Search Engines – SS 2009 - hpi.de · PDF fileBlock Compression Blöcke á 1024 Byte Blöcke werden mit 0x00 aufgefüllt Search Engines | Sebastian Klose, Vitaliy

postings.dat

Search Engines | Sebastian Klose, Vitaliy Kats | 23. Juli 2009

6 Block 1 Block 2 Block 3 … Block n

Blocklänge | Anzahl DocIDs | DocID 1 | DocID 2 | Anzahl DocIDs | DocID 1 | …

Page 7: Index Compression Search Engines – SS 2009 - hpi.de · PDF fileBlock Compression Blöcke á 1024 Byte Blöcke werden mit 0x00 aufgefüllt Search Engines | Sebastian Klose, Vitaliy

Suche

1.  Binäre Suche in terms.dat um BlockIndex zu finden

2.  Lineare Suche um TermIndex im Block zu finden

3.  Block #BlockIndex aus postings.dat laden

4.  #TermIndex’te DocumentID Liste finden

Search Engines | Sebastian Klose, Vitaliy Kats | 23. Juli 2009

7

Page 8: Index Compression Search Engines – SS 2009 - hpi.de · PDF fileBlock Compression Blöcke á 1024 Byte Blöcke werden mit 0x00 aufgefüllt Search Engines | Sebastian Klose, Vitaliy

Caching

■  postings.dat wird beim Starten gescannt

□  Offset zu jedem BlockIndex zwischenspeichern

■  Einmal gelesene Blöcke (aus beiden Dateien) werden in Dictionary gespeichert

■  Naives Caching

□  Wenn das Dictionary voll ist, ändert sich der Cache nicht mehr

□  Für binäre Suche gut, da diese unabhängig vom gesuchten Term mit den gleichen Blöcken startet

Search Engines | Sebastian Klose, Vitaliy Kats | 23. Juli 2009

8

Page 9: Index Compression Search Engines – SS 2009 - hpi.de · PDF fileBlock Compression Blöcke á 1024 Byte Blöcke werden mit 0x00 aufgefüllt Search Engines | Sebastian Klose, Vitaliy

Kompression

Search Engines | Sebastian Klose, Vitaliy Kats | 23. Juli 2009

9

MySQL Compressed Index

Daten 2 GB 900 MB

Index 183 MB 81 MB

> 50%

Page 10: Index Compression Search Engines – SS 2009 - hpi.de · PDF fileBlock Compression Blöcke á 1024 Byte Blöcke werden mit 0x00 aufgefüllt Search Engines | Sebastian Klose, Vitaliy

Performance

MySQL Compressed Index

“java” #1 78 ms 188 ms

“java” #2 16 ms 15 ms

“spider” #1 47 ms 78 ms

“spider” #2 16 ms 15 ms

“spider” #3 31 ms 15 ms

“crawler”, #1 78 ms 579 ms

“crawler”, #2 16 ms 0 ms

“crawler”, #3 0 ms 0 ms

Search Engines | Sebastian Klose, Vitaliy Kats | 23. Juli 2009

10

Page 11: Index Compression Search Engines – SS 2009 - hpi.de · PDF fileBlock Compression Blöcke á 1024 Byte Blöcke werden mit 0x00 aufgefüllt Search Engines | Sebastian Klose, Vitaliy

Platzverschwendung

■  Padding in terms.dat kostet unnötigt Speicherplatz

■  Messung

□  81326 Blöcke insgesamt

□  7803 voll (1024 Byte ausgenutzt)

□  449.646 Bytes Padding insgesamt

□  ~0,5% Platzverschwendung

Search Engines | Sebastian Klose, Vitaliy Kats | 23. Juli 2009

11