Java 类org.apache.lucene.index.SegmentInfoPerCommit 实例源码

项目:NYBC    文件:SimpleTextLiveDocsFormat.java   
@Override
public Bits readLiveDocs(Directory dir, SegmentInfoPerCommit info, IOContext context) throws IOException {
  assert info.hasDeletions();
  BytesRef scratch = new BytesRef();
  CharsRef scratchUTF16 = new CharsRef();

  String fileName = IndexFileNames.fileNameFromGeneration(info.info.name, LIVEDOCS_EXTENSION, info.getDelGen());
  IndexInput in = null;
  boolean success = false;
  try {
    in = dir.openInput(fileName, context);

    SimpleTextUtil.readLine(in, scratch);
    assert StringHelper.startsWith(scratch, SIZE);
    int size = parseIntAt(scratch, SIZE.length, scratchUTF16);

    BitSet bits = new BitSet(size);

    SimpleTextUtil.readLine(in, scratch);
    while (!scratch.equals(END)) {
      assert StringHelper.startsWith(scratch, DOC);
      int docid = parseIntAt(scratch, DOC.length, scratchUTF16);
      bits.set(docid);
      SimpleTextUtil.readLine(in, scratch);
    }

    success = true;
    return new SimpleTextBits(bits, size);
  } finally {
    if (success) {
      IOUtils.close(in);
    } else {
      IOUtils.closeWhileHandlingException(in);
    }
  }
}
项目:NYBC    文件:SimpleTextLiveDocsFormat.java   
@Override
public void writeLiveDocs(MutableBits bits, Directory dir, SegmentInfoPerCommit info, int newDelCount, IOContext context) throws IOException {
  BitSet set = ((SimpleTextBits) bits).bits;
  int size = bits.length();
  BytesRef scratch = new BytesRef();

  String fileName = IndexFileNames.fileNameFromGeneration(info.info.name, LIVEDOCS_EXTENSION, info.getNextDelGen());
  IndexOutput out = null;
  boolean success = false;
  try {
    out = dir.createOutput(fileName, context);
    SimpleTextUtil.write(out, SIZE);
    SimpleTextUtil.write(out, Integer.toString(size), scratch);
    SimpleTextUtil.writeNewline(out);

    for (int i = set.nextSetBit(0); i >= 0; i=set.nextSetBit(i + 1)) { 
      SimpleTextUtil.write(out, DOC);
      SimpleTextUtil.write(out, Integer.toString(i), scratch);
      SimpleTextUtil.writeNewline(out);
    }

    SimpleTextUtil.write(out, END);
    SimpleTextUtil.writeNewline(out);
    success = true;
  } finally {
    if (success) {
      IOUtils.close(out);
    } else {
      IOUtils.closeWhileHandlingException(out);
    }
  }
}
项目:NYBC    文件:Lucene40LiveDocsFormat.java   
@Override
public Bits readLiveDocs(Directory dir, SegmentInfoPerCommit info, IOContext context) throws IOException {
  String filename = IndexFileNames.fileNameFromGeneration(info.info.name, DELETES_EXTENSION, info.getDelGen());
  final BitVector liveDocs = new BitVector(dir, filename, context);
  assert liveDocs.count() == info.info.getDocCount() - info.getDelCount():
    "liveDocs.count()=" + liveDocs.count() + " info.docCount=" + info.info.getDocCount() + " info.getDelCount()=" + info.getDelCount();
  assert liveDocs.length() == info.info.getDocCount();
  return liveDocs;
}
项目:NYBC    文件:Lucene40LiveDocsFormat.java   
@Override
public void writeLiveDocs(MutableBits bits, Directory dir, SegmentInfoPerCommit info, int newDelCount, IOContext context) throws IOException {
  String filename = IndexFileNames.fileNameFromGeneration(info.info.name, DELETES_EXTENSION, info.getNextDelGen());
  final BitVector liveDocs = (BitVector) bits;
  assert liveDocs.count() == info.info.getDocCount() - info.getDelCount() - newDelCount;
  assert liveDocs.length() == info.info.getDocCount();
  liveDocs.write(dir, filename, context);
}
项目:incubator-blur    文件:MergeSortRowIdMatcher.java   
private Collection<SegmentKey> getSegmentKeys() throws IOException {
  List<SegmentKey> keys = new ArrayList<SegmentKey>();
  SegmentInfos segmentInfos = new SegmentInfos();
  segmentInfos.read(_directory, _indexCommit.getSegmentsFileName());
  for (SegmentInfoPerCommit segmentInfoPerCommit : segmentInfos) {
    String name = segmentInfoPerCommit.info.name;
    String id = getId(segmentInfoPerCommit.info);
    keys.add(new SegmentKey(name, id));
  }
  return keys;
}
项目:incubator-blur    文件:SharedMergeScheduler.java   
MergeStatus(OneMerge oneMerge, Directory directory, long size, List<SegmentInfoPerCommit> segments) {
  _id = UUID.randomUUID().toString();
  _directory = directory;
  _start = System.nanoTime();
  _size = size;
  _oneMerge = oneMerge;
  _segments = segments;
}
项目:incubator-blur    文件:GenericRecordReader.java   
public void initialize(BlurInputSplit blurInputSplit, Configuration configuration) throws IOException {
  if (_setup) {
    return;
  }
  _setup = true;
  _table = blurInputSplit.getTable();
  Path localCachePath = BlurInputFormat.getLocalCachePath(configuration);
  LOG.info("Local cache path [{0}]", localCachePath);
  _directory = BlurInputFormat.getDirectory(configuration, _table.toString(), blurInputSplit.getDir());

  SegmentInfoPerCommit commit = segmentInfosRead(_directory, blurInputSplit.getSegmentsName(),
      blurInputSplit.getSegmentInfoName());

  SegmentInfo segmentInfo = commit.info;
  if (localCachePath != null) {
    _readingDirectory = copyFilesLocally(configuration, _directory, _table.toString(), blurInputSplit.getDir(),
        localCachePath, commit.files(), blurInputSplit.getSegmentInfoName());
  } else {
    _readingDirectory = _directory;
  }

  Blur024Codec blur024Codec = new Blur024Codec();
  IOContext iocontext = IOContext.READ;

  String segmentName = segmentInfo.name;
  FieldInfos fieldInfos = blur024Codec.fieldInfosFormat().getFieldInfosReader()
      .read(_readingDirectory, segmentName, iocontext);
  if (commit.getDelCount() > 0) {
    _liveDocs = blur024Codec.liveDocsFormat().readLiveDocs(_readingDirectory, commit, iocontext);
  }
  _fieldsReader = blur024Codec.storedFieldsFormat().fieldsReader(_readingDirectory, segmentInfo, fieldInfos,
      iocontext);

  _maxDoc = commit.info.getDocCount();
}
项目:sidecar_index    文件:SidecarMergePolicy.java   
@Override
public MergeSpecification findForcedMerges(SegmentInfos segmentInfos,
    int maxSegmentCount, Map<SegmentInfoPerCommit,Boolean> segmentsToOptimize)
    throws CorruptIndexException, IOException {
  System.err.println("findForcedMerges");
  return null;
}
项目:NYBC    文件:LiveDocsFormat.java   
/** Read live docs bits. */
public abstract Bits readLiveDocs(Directory dir, SegmentInfoPerCommit info, IOContext context) throws IOException;
项目:incubator-blur    文件:GenericRecordReader.java   
private SegmentInfoPerCommit segmentInfosRead(Directory directory, String segmentFileName, String segmentInfoName)
    throws IOException {
  boolean success = false;

  ChecksumIndexInput input = new ChecksumIndexInput(directory.openInput(segmentFileName, IOContext.READ));
  try {
    final int format = input.readInt();
    if (format == CodecUtil.CODEC_MAGIC) {
      // 4.0+
      CodecUtil.checkHeaderNoMagic(input, "segments", SegmentInfos.VERSION_40, SegmentInfos.VERSION_40);
      input.readLong();// read version
      input.readInt(); // read counter
      int numSegments = input.readInt();
      if (numSegments < 0) {
        throw new CorruptIndexException("invalid segment count: " + numSegments + " (resource: " + input + ")");
      }
      for (int seg = 0; seg < numSegments; seg++) {
        String segName = input.readString();
        Codec codec = Codec.forName(input.readString());
        SegmentInfo info = codec.segmentInfoFormat().getSegmentInfoReader().read(directory, segName, IOContext.READ);
        info.setCodec(codec);
        long delGen = input.readLong();
        int delCount = input.readInt();
        if (delCount < 0 || delCount > info.getDocCount()) {
          throw new CorruptIndexException("invalid deletion count: " + delCount + " (resource: " + input + ")");
        }
        if (segName.equals(segmentInfoName)) {
          success = true;
          return new SegmentInfoPerCommit(info, delCount, delGen);
        }
      }
    } else {
      throw new IOException("Legacy Infos not supported for dir [" + directory + "].");
    }
    throw new IOException("Segment [" + segmentInfoName + "] nout found in dir [" + directory + "]");
  } finally {
    if (!success) {
      IOUtils.closeWhileHandlingException(input);
    } else {
      input.close();
    }
  }
}
项目:sidecar_index    文件:SidecarMergePolicy.java   
@Override
public boolean useCompoundFile(SegmentInfos segments, SegmentInfoPerCommit newSegment) {
  return useCompoundFile;
}
项目:NYBC    文件:LiveDocsFormat.java   
/** Persist live docs bits.  Use {@link
 *  SegmentInfoPerCommit#getNextDelGen} to determine the
 *  generation of the deletes file you should write to. */
public abstract void writeLiveDocs(MutableBits bits, Directory dir, SegmentInfoPerCommit info, int newDelCount, IOContext context) throws IOException;