public override void Abort()
        {
            HasVectors = false;

            if (Writer != null)
            {
                Writer.Abort();
                Writer = null;
            }

            LastDocID = 0;
            Reset();
        }
 private void InitTermVectorsWriter()
 {
     if (Writer == null)
     {
         IOContext context = new IOContext(new FlushInfo(DocWriter.NumDocsInRAM, DocWriter.BytesUsed()));
         Writer = DocWriter.Codec.TermVectorsFormat().VectorsWriter(DocWriter.Directory, DocWriter.SegmentInfo, context);
         LastDocID = 0;
     }
 }
        public override void Flush(IDictionary<string, TermsHashConsumerPerField> fieldsToFlush, SegmentWriteState state)
        {
            if (Writer != null)
            {
                int numDocs = state.SegmentInfo.DocCount;
                Debug.Assert(numDocs > 0);
                // At least one doc in this run had term vectors enabled
                try
                {
                    Fill(numDocs);
                    Debug.Assert(state.SegmentInfo != null);
                    Writer.Finish(state.FieldInfos, numDocs);
                }
                finally
                {
                    IOUtils.Close(Writer);
                    Writer = null;
                    LastDocID = 0;
                    HasVectors = false;
                }
            }

            foreach (TermsHashConsumerPerField field in fieldsToFlush.Values)
            {
                TermVectorsConsumerPerField perField = (TermVectorsConsumerPerField)field;
                perField.TermsHashPerField.Reset();
                perField.ShrinkHash();
            }
        }