Snapshot returns a frozen read-only view of the index.
()
| 105 | |
| 106 | // Snapshot returns a frozen read-only view of the index. |
| 107 | func (idx *Index) Snapshot() *Snapshot { |
| 108 | del := make(map[uint32]bool, len(idx.deleted)) |
| 109 | for id := range idx.deleted { |
| 110 | del[id] = true |
| 111 | } |
| 112 | var p1Copy [256][]uint32 |
| 113 | for i, ids := range idx.byPrefix1 { |
| 114 | if len(ids) > 0 { |
| 115 | p1Copy[i] = ids[:len(ids):len(ids)] |
| 116 | } |
| 117 | } |
| 118 | return &Snapshot{ |
| 119 | docs: idx.docs[:len(idx.docs):len(idx.docs)], |
| 120 | deleted: del, |
| 121 | byGram: copyPostings(idx.byGram), |
| 122 | byPrefix1: p1Copy, |
| 123 | byPrefix2: copyPostings(idx.byPrefix2), |
| 124 | } |
| 125 | } |