Java 类org.apache.lucene.util.OfflineSorter.ByteSequencesWriter 实例源码

项目:search    文件:WFSTCompletionLookup.java   
@Override
protected void encode(ByteSequencesWriter writer, ByteArrayDataOutput output, byte[] buffer, BytesRef spare, BytesRef payload, Set<BytesRef> contexts, long weight) throws IOException {
  if (spare.length + 4 >= buffer.length) {
    buffer = ArrayUtil.grow(buffer, spare.length + 4);
  }
  output.reset(buffer);
  output.writeBytes(spare.bytes, spare.offset, spare.length);
  output.writeInt(encodeWeight(weight));
  writer.write(buffer, 0, output.getPosition());
}
项目:search    文件:SortedTermFreqIteratorWrapper.java   
private ByteSequencesReader sort() throws IOException {
  String prefix = getClass().getSimpleName();
  File directory = OfflineSorter.defaultTempDir();
  tempInput = File.createTempFile(prefix, ".input", directory);
  tempSorted = File.createTempFile(prefix, ".sorted", directory);

  final ByteSequencesWriter writer = new ByteSequencesWriter(tempInput);
  boolean success = false;
  try {
    BytesRef spare;
    byte[] buffer = new byte[0];
    ByteArrayDataOutput output = new ByteArrayDataOutput(buffer);

    while ((spare = source.next()) != null) {
      encode(writer, output, buffer, spare, source.weight());
    }
    writer.close();
    new OfflineSorter(tieBreakByCostComparator).sort(tempInput, tempSorted);
    ByteSequencesReader reader = new ByteSequencesReader(tempSorted);
    success = true;
    return reader;

  } finally {
    if (success) {
      IOUtils.close(writer);
    } else {
      try {
        IOUtils.closeWhileHandlingException(writer);
      } finally {
        close();
      }
    }
  }
}
项目:search    文件:SortedTermFreqIteratorWrapper.java   
/** encodes an entry (bytes+weight) to the provided writer */
protected void encode(ByteSequencesWriter writer, ByteArrayDataOutput output, byte[] buffer, BytesRef spare, long weight) throws IOException {
  if (spare.length + 8 >= buffer.length) {
    buffer = ArrayUtil.grow(buffer, spare.length + 8);
  }
  output.reset(buffer);
  output.writeBytes(spare.bytes, spare.offset, spare.length);
  output.writeLong(weight);
  writer.write(buffer, 0, output.getPosition());
}
项目:search    文件:SortedInputIterator.java   
private ByteSequencesReader sort() throws IOException {
  String prefix = getClass().getSimpleName();
  File directory = OfflineSorter.defaultTempDir();
  tempInput = File.createTempFile(prefix, ".input", directory);
  tempSorted = File.createTempFile(prefix, ".sorted", directory);

  final OfflineSorter.ByteSequencesWriter writer = new OfflineSorter.ByteSequencesWriter(tempInput);
  boolean success = false;
  try {
    BytesRef spare;
    byte[] buffer = new byte[0];
    ByteArrayDataOutput output = new ByteArrayDataOutput(buffer);

    while ((spare = source.next()) != null) {
      encode(writer, output, buffer, spare, source.payload(), source.contexts(), source.weight());
    }
    writer.close();
    new OfflineSorter(tieBreakByCostComparator).sort(tempInput, tempSorted);
    ByteSequencesReader reader = new OfflineSorter.ByteSequencesReader(tempSorted);
    success = true;
    return reader;

  } finally {
    if (success) {
      IOUtils.close(writer);
    } else {
      try {
        IOUtils.closeWhileHandlingException(writer);
      } finally {
        close();
      }
    }
  }
}
项目:search    文件:TestOfflineSorter.java   
private File writeAll(String name, byte[][] data) throws IOException {
  File file = new File(tempDir, name);
  ByteSequencesWriter w = new OfflineSorter.ByteSequencesWriter(file);
  for (byte [] datum : data) {
    w.write(datum);
  }
  w.close();
  return file;
}
项目:read-open-source-code    文件:WFSTCompletionLookup.java   
@Override
protected void encode(ByteSequencesWriter writer, ByteArrayDataOutput output, byte[] buffer, BytesRef spare, BytesRef payload, Set<BytesRef> contexts, long weight) throws IOException {
  if (spare.length + 4 >= buffer.length) {
    buffer = ArrayUtil.grow(buffer, spare.length + 4);
  }
  output.reset(buffer);
  output.writeBytes(spare.bytes, spare.offset, spare.length);
  output.writeInt(encodeWeight(weight));
  writer.write(buffer, 0, output.getPosition());
}
项目:read-open-source-code    文件:SortedTermFreqIteratorWrapper.java   
private ByteSequencesReader sort() throws IOException {
  String prefix = getClass().getSimpleName();
  File directory = OfflineSorter.defaultTempDir();
  tempInput = File.createTempFile(prefix, ".input", directory);
  tempSorted = File.createTempFile(prefix, ".sorted", directory);

  final ByteSequencesWriter writer = new ByteSequencesWriter(tempInput);
  boolean success = false;
  try {
    BytesRef spare;
    byte[] buffer = new byte[0];
    ByteArrayDataOutput output = new ByteArrayDataOutput(buffer);

    while ((spare = source.next()) != null) {
      encode(writer, output, buffer, spare, source.weight());
    }
    writer.close();
    new OfflineSorter(tieBreakByCostComparator).sort(tempInput, tempSorted);
    ByteSequencesReader reader = new ByteSequencesReader(tempSorted);
    success = true;
    return reader;

  } finally {
    if (success) {
      IOUtils.close(writer);
    } else {
      try {
        IOUtils.closeWhileHandlingException(writer);
      } finally {
        close();
      }
    }
  }
}
项目:read-open-source-code    文件:SortedTermFreqIteratorWrapper.java   
/** encodes an entry (bytes+weight) to the provided writer */
protected void encode(ByteSequencesWriter writer, ByteArrayDataOutput output, byte[] buffer, BytesRef spare, long weight) throws IOException {
  if (spare.length + 8 >= buffer.length) {
    buffer = ArrayUtil.grow(buffer, spare.length + 8);
  }
  output.reset(buffer);
  output.writeBytes(spare.bytes, spare.offset, spare.length);
  output.writeLong(weight);
  writer.write(buffer, 0, output.getPosition());
}
项目:read-open-source-code    文件:SortedInputIterator.java   
private ByteSequencesReader sort() throws IOException {
  String prefix = getClass().getSimpleName();
  File directory = OfflineSorter.defaultTempDir();
  tempInput = File.createTempFile(prefix, ".input", directory);
  tempSorted = File.createTempFile(prefix, ".sorted", directory);

  final OfflineSorter.ByteSequencesWriter writer = new OfflineSorter.ByteSequencesWriter(tempInput);
  boolean success = false;
  try {
    BytesRef spare;
    byte[] buffer = new byte[0];
    ByteArrayDataOutput output = new ByteArrayDataOutput(buffer);

    while ((spare = source.next()) != null) {
      encode(writer, output, buffer, spare, source.payload(), source.contexts(), source.weight());
    }
    writer.close();
    new OfflineSorter(tieBreakByCostComparator).sort(tempInput, tempSorted);
    ByteSequencesReader reader = new OfflineSorter.ByteSequencesReader(tempSorted);
    success = true;
    return reader;

  } finally {
    if (success) {
      IOUtils.close(writer);
    } else {
      try {
        IOUtils.closeWhileHandlingException(writer);
      } finally {
        close();
      }
    }
  }
}