@Override public void lookup(int[] docIds, long[] values, int n) { for (int i = 0; i < n; ++i) { values[i] = charArray.get(docIds[i]); } }
public void get(final long index, final CharArray chars, final long start, final long length) { chars.set(start, this, index, length); }
@Override public final CharArray charArray(long start, long numChars) { return new CharArray(this, start, numChars); } }
public void set(final long index, final char[] chars) { set(index, chars, 0, chars.length); }
public void get(final long index, final CharArray chars) { get(index, chars, 0, chars.length); }
public CharArray slice(final long start, final long length) { return new CharArray(buffer, start*TYPE_SIZE, length); } }
public void set(final long index, final CharArray chars) { set(index, chars, 0, chars.length); }
public void get(final long index, final char[] chars) { get(index, chars, 0, chars.length); }
public static MMapBuffer cacheCharFieldToFile(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 CharArray charArray = buffer.memory().charArray(0, numDocs); try { while (iterator.nextTerm()) { final char term = (char)iterator.term(); while (true) { final int n = iterator.nextDocs(docIdBuf); for (int i = 0; i < n; ++i) { charArray.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; }