record InvertedIndexRec(simple,full) procedure FullInvertedIndex(ii,k,words) #: accumulate a full inverted index /ii := InvertedIndexRec( table(set()), table() ) # create lookup table and null set wc := 0 every (w := !words, wc +:= 1) do { if *ii.simple[w] = 0 then { ii.simple[w] := set() # new word, new set ii.full[w] := table() # also new table } insert(ii.simple[w],k) /ii.full[w,k] := set() insert(ii.full[w,k],wc) } return ii end