Skip to content

Commit 555efca

Browse files
DivyanshIITBvigyasharma
authored andcommitted
Optimize ParallelLeafReader to improve term vector fetching efficiency (#14373)
1 parent ac6dcf9 commit 555efca

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

lucene/core/src/java/org/apache/lucene/index/ParallelLeafReader.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -348,15 +348,24 @@ public void prefetch(int docID) throws IOException {
348348
@Override
349349
public Fields get(int docID) throws IOException {
350350
ParallelFields fields = null;
351-
for (Map.Entry<String, LeafReader> ent : tvFieldToReader.entrySet()) {
352-
String fieldName = ent.getKey();
353-
TermVectors termVectors = readerToTermVectors.get(ent.getValue());
354-
Terms vector = termVectors.get(docID, fieldName);
355-
if (vector != null) {
351+
352+
// Step 2: Fetch all term vectors once per reader
353+
for (Map.Entry<LeafReader, TermVectors> entry : readerToTermVectors.entrySet()) {
354+
TermVectors termVectors = entry.getValue();
355+
Fields docFields = termVectors.get(docID); // Fetch all fields at once
356+
357+
if (docFields != null) {
356358
if (fields == null) {
357359
fields = new ParallelFields();
358360
}
359-
fields.addField(fieldName, vector);
361+
362+
// Step 3: Aggregate only required fields
363+
for (String fieldName : docFields) {
364+
Terms vector = docFields.terms(fieldName);
365+
if (vector != null) {
366+
fields.addField(fieldName, vector);
367+
}
368+
}
360369
}
361370
}
362371

0 commit comments

Comments
 (0)