public void get(final long index, final ShortArray shorts) { get(index, shorts, 0, shorts.length); }
public void set(final long index, final short[] shorts) { set(index, shorts, 0, shorts.length); }
public ShortArray slice(final long start, final long length) { return new ShortArray(buffer, start*TYPE_SIZE, length); } }
public void get(final long index, final ShortArray shorts, final long start, final long length) { shorts.set(start, this, index, length); }
@Override public void lookup(int[] docIds, long[] values, int n) { for (int i = 0; i < n; ++i) { values[i] = shortArray.get(docIds[i]); } }
@Override public final ShortArray shortArray(long start, long numShorts) { return new ShortArray(this, start, numShorts); }
public void set(final long index, final ShortArray shorts) { set(index, shorts, 0, shorts.length); }
public void get(final long index, final short[] shorts) { get(index, shorts, 0, shorts.length); }
public static MMapBuffer cacheShortFieldToFile(UnsortedIntTermDocIterator iterator, int numDocs, File file) throws IOException { final int[] docIdBuf = new int[BUFFER_SIZE]; final int length = numDocs * 2; final MMapBuffer buffer = new MMapBuffer(file, 0L, length, FileChannel.MapMode.READ_WRITE, ByteOrder.LITTLE_ENDIAN); final ShortArray shortArray = buffer.memory().shortArray(0, numDocs); try { while (iterator.nextTerm()) { final short term = (short)iterator.term(); while (true) { final int n = iterator.nextDocs(docIdBuf); for (int i = 0; i < n; ++i) { shortArray.set(docIdBuf[i], term); } if (n < docIdBuf.length) { break; } } } buffer.sync(0, length); } catch (RuntimeException e) { Closeables2.closeQuietly(buffer, LOG); throw e; } catch (IOException e) { Closeables2.closeQuietly(buffer, LOG); throw e; } return buffer; }