Exemplo n.º 1
0
 internal FlushedSegment(SegmentCommitInfo segmentInfo, FieldInfos fieldInfos, BufferedUpdates segmentUpdates, IMutableBits liveDocs, int delCount)
 {
     this.segmentInfo    = segmentInfo;
     this.fieldInfos     = fieldInfos;
     this.segmentUpdates = segmentUpdates != null && segmentUpdates.Any() ? new FrozenBufferedUpdates(segmentUpdates, true) : null;
     this.liveDocs       = liveDocs;
     this.delCount       = delCount;
 }
Exemplo n.º 2
0
        public override void WriteLiveDocs(IMutableBits bits, Directory dir, SegmentCommitInfo info, int newDelCount, IOContext context)
        {
            string    filename      = IndexFileNames.FileNameFromGeneration(info.Info.Name, DELETES_EXTENSION, info.NextDelGen);
            BitVector liveDocs      = (BitVector)bits;
            int       liveDocsCount = liveDocs.Count();

            Debug.Assert(liveDocsCount == info.Info.DocCount - info.DelCount - newDelCount);
            Debug.Assert(liveDocs.Length == info.Info.DocCount);
            liveDocs.Write(dir, filename, context);
        }
        public override void WriteLiveDocs(IMutableBits bits, Directory dir, SegmentCommitInfo info, int newDelCount,
                                           IOContext context)
        {
            var set     = ((SimpleTextBits)bits).bits;
            var size    = bits.Length;
            var scratch = new BytesRef();

            var         fileName = IndexFileNames.FileNameFromGeneration(info.Info.Name, LIVEDOCS_EXTENSION, info.NextDelGen);
            IndexOutput output   = null;
            var         success  = false;

            try
            {
                output = dir.CreateOutput(fileName, context);
                SimpleTextUtil.Write(output, SIZE);
                SimpleTextUtil.Write(output, Convert.ToString(size, CultureInfo.InvariantCulture), scratch);
                SimpleTextUtil.WriteNewline(output);

                for (int i = set.NextSetBit(0); i >= 0; i = set.NextSetBit(i + 1))
                {
                    SimpleTextUtil.Write(output, DOC);
                    SimpleTextUtil.Write(output, Convert.ToString(i, CultureInfo.InvariantCulture), scratch);
                    SimpleTextUtil.WriteNewline(output);
                }

                SimpleTextUtil.Write(output, END);
                SimpleTextUtil.WriteNewline(output);
                SimpleTextUtil.WriteChecksum(output, scratch);
                success = true;
            }
            finally
            {
                if (success)
                {
                    IOUtils.Dispose(output);
                }
                else
                {
                    IOUtils.DisposeWhileHandlingException(output);
                }
            }
        }
Exemplo n.º 4
0
 /// <summary>
 /// Persist live docs bits.  Use {@link
 ///  SegmentCommitInfo#getNextDelGen} to determine the
 ///  generation of the deletes file you should write to.
 /// </summary>
 public abstract void WriteLiveDocs(IMutableBits bits, Directory dir, SegmentCommitInfo info, int newDelCount, IOContext context);