Inverted index
Meccanismo di indicizzazione di collezioni di testi word-oriented, per velocizzare la ricerca. Composto da due elementi:
- vocabolario
- occorrenze (posting list)
Per ogni termine , viene generata una lista contenente tutti i documenti che lo contengono. I documenti sono identificati da un serial number.
flowchart LR
A[Brutus] ==> B["1|2|4|11|31|45|173|174"]
C[Caesar] ==> D["1|2|4|5|6|16|57|132"]
E[Calpurnia] ==> F["2|31|54|101"]
Posting list
Per ogni termine, viene generata una lista di occorrenze:
- Document-based: lista di documenti con la corrispondente term frequency
- Word-based: lista di documenti con il corrispondente posizionamento dei termini
Document based
flowchart LR
A["Brutus|3"] ==> B["D7, 4|B9, 3|S2, 1"]
C["Caesar|2"] ==> D["F3, 2|A2, 2"]
E["Calpurnia|1"] ==> F["A2, 1"]
Dove la parte sinistra è composta dal termine indicizzato, e la document frequency, . La posting list, invece, è composta dall’id del documento e dalla term frequency di quel termine in quel documento.
Word-based
flowchart LR
A["Brutus|3"] ==> B["D7, 50, 90, 120, 221|B9, 34|S2, 23, 32"]
C["Caesar|2"] ==> D["F3, 122, 345, 654|A2, 44, 65"]
E["Calpurnia|1"] ==> F["A2, 1"]
Nella parte sinistra, come per la document based, troviamo il termine indicizzato e la sua document frequency. La posting list, invece, è composta dall’id del documento e dalla lista delle posizioni in cui si trova il termine nel documento.
- D7: id documento
- 50, 90, 120, 221: posizione del termine nel documento. . Favorisce la ricerca.
Spazio richiesto
Lo spazio richiesto per un vocabolario è piuttosto piccolo. Dalla legge di Heap, si ha che il vocabolario cresce con , con , solitamente . Tutto il resto dello spazio è occupato dalle posting list word-based, che pesano O(n) ed è circa il 40% della dimensione del testo se si eliminano le stopwords, l’80% se si tengono. Posting list document based sono più leggere e occupano dal 20% al 40% delle dimensioni del testo.