mayya-sharipova commented on a change in pull request #416:
URL: https://github.com/apache/lucene/pull/416#discussion_r751671158
##########
File path:
lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90HnswVectorsReader.java
##########
@@ -205,6 +215,43 @@ private FieldEntry readField(DataInput input) throws
IOException {
return new FieldEntry(input, similarityFunction);
}
+ private void fillGraphNodesAndOffsetsByLevel() throws IOException {
+ for (FieldEntry entry : fields.values()) {
+ IndexInput input =
Review comment:
Yes, indeed we populate `FieldEntry` from the graph index (levels) file.
> It feels a bit surprising that FieldEntry is constructed across two
different files
Indeed, I was not happy with this as well. Alternatively, we can put all
this information about levels and layers into a single meta file as it is
currently done. Happy to hear other suggestions as well.
> It also means FieldEntry isn't immutable
No, `FieldEntry` is immutable, as all its fields are final, they are
initialized and filled in the `Lucene90HnswVectorsReader` constructor.
In https://github.com/apache/lucene/pull/315 was trying to fill graph data
lazily on the first use, but it looks like we don't like lazy loading.
> Maybe we could keep the file as-is but create a new class to hold the
graph index, something like GraphLevels?
Is `GraphLevels` instead of `FieldEntry`? I like the approach of a single
`FieldEntry` for every field, as it follows how other field types are organized.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]