protected override TextWriter GetTextWriter(ulong id, ulong fieldId)
        {
            var payload = positionsWriter.StartPayload();
            var key     = PersistentIndex.GetKeyForPositions('T', id, fieldId);

            posIndexWriter.AddTerm(key,
                                   new PostingListAddress(payload),
                                   _ => throw new Exception("Not expected"));
            return(positionsWriter.StartTextPayload());
        }
        protected override void AddDocVector(ulong id, ulong fieldId, IEnumerable <TextPosition> positions)
        {
            var listStart = positionsWriter.StartList();

            foreach (var pos in positions)
            {
                positionsWriter.AddValue((ulong)pos.Offset + 1);
                positionsWriter.AddValue((ulong)pos.Offset + 1 + (ulong)pos.Length);
            }
            var listEnd = positionsWriter.EndList();

            var key = PersistentIndex.GetKeyForPositions('P', id, fieldId);

            posIndexWriter.AddTerm(key,
                                   new PostingListAddress(listStart),
                                   _ => throw new Exception("Not expected"));
            ++posUpdates;
            if (posUpdates > AutoCommitThreshold)
            {
                posIndexUpdate.Commit();
                posIndexUpdate = posIndexWriter.BeginUpdate();
                posUpdates     = 0;
            }
        }