|
@@ -442,13 +442,13 @@ public class DefaultIVFVectorsReader extends IVFVectorsReader implements OffHeap
|
|
|
for (int j = 0; j < BULK_SIZE; j++) {
|
|
|
int doc = docIdsScratch[j + offset];
|
|
|
if (doc != -1) {
|
|
|
- indexInput.seek(slicePos + (offset * quantizedByteLength) + (j * quantizedVectorByteSize));
|
|
|
float qcDist = osqVectorsScorer.quantizeScore(quantizedQueryScratch);
|
|
|
scores[j] = qcDist;
|
|
|
+ } else {
|
|
|
+ indexInput.skipBytes(quantizedVectorByteSize);
|
|
|
}
|
|
|
}
|
|
|
// read in all corrections
|
|
|
- indexInput.seek(slicePos + (offset * quantizedByteLength) + (BULK_SIZE * quantizedVectorByteSize));
|
|
|
indexInput.readFloats(correctionsLower, 0, BULK_SIZE);
|
|
|
indexInput.readFloats(correctionsUpper, 0, BULK_SIZE);
|
|
|
for (int j = 0; j < BULK_SIZE; j++) {
|
|
@@ -504,18 +504,18 @@ public class DefaultIVFVectorsReader extends IVFVectorsReader implements OffHeap
|
|
|
|
|
|
@Override
|
|
|
public int visit(KnnCollector knnCollector) throws IOException {
|
|
|
+ indexInput.seek(slicePos);
|
|
|
// block processing
|
|
|
int scoredDocs = 0;
|
|
|
int limit = vectors - BULK_SIZE + 1;
|
|
|
int i = 0;
|
|
|
-
|
|
|
for (; i < limit; i += BULK_SIZE) {
|
|
|
final int docsToBulkScore = acceptDocs == null ? BULK_SIZE : docToBulkScore(docIdsScratch, i, acceptDocs);
|
|
|
if (docsToBulkScore == 0) {
|
|
|
+ indexInput.skipBytes(quantizedByteLength * BULK_SIZE);
|
|
|
continue;
|
|
|
}
|
|
|
quantizeQueryIfNecessary();
|
|
|
- indexInput.seek(slicePos + i * quantizedByteLength);
|
|
|
final float maxScore;
|
|
|
if (docsToBulkScore < BULK_SIZE / 2) {
|
|
|
maxScore = scoreIndividually(i);
|
|
@@ -541,7 +541,6 @@ public class DefaultIVFVectorsReader extends IVFVectorsReader implements OffHeap
|
|
|
int doc = docIdsScratch[i];
|
|
|
if (acceptDocs == null || acceptDocs.get(doc)) {
|
|
|
quantizeQueryIfNecessary();
|
|
|
- indexInput.seek(slicePos + i * quantizedByteLength);
|
|
|
float qcDist = osqVectorsScorer.quantizeScore(quantizedQueryScratch);
|
|
|
indexInput.readFloats(correctiveValues, 0, 3);
|
|
|
final int quantizedComponentSum = Short.toUnsignedInt(indexInput.readShort());
|
|
@@ -560,6 +559,8 @@ public class DefaultIVFVectorsReader extends IVFVectorsReader implements OffHeap
|
|
|
);
|
|
|
scoredDocs++;
|
|
|
knnCollector.collect(doc, score);
|
|
|
+ } else {
|
|
|
+ indexInput.skipBytes(quantizedByteLength);
|
|
|
}
|
|
|
}
|
|
|
if (scoredDocs > 0) {
|