benwtrent commented on code in PR #13635: URL: https://github.com/apache/lucene/pull/13635#discussion_r1712183885
########## lucene/core/src/java/org/apache/lucene/util/hnsw/HnswGraphSearcher.java: ########## @@ -70,6 +72,43 @@ public static void search( search(scorer, knnCollector, graph, graphSearcher, acceptOrds); } + /** + * Searches the HNSW graph for for the nerest neighbors of a query vector, starting from the + * provided entry points. + * + * @param scorer the scorer to compare the query with the nodes + * @param knnCollector a collector of top knn results to be returned + * @param graph the graph values. May represent the entire graph, or a level in a hierarchical + * graph. + * @param acceptOrds {@link Bits} that represents the allowed document ordinals to match, or + * {@code null} if they are all allowed to match. + * @param entryPointOrds the entry points for search. + */ + public static void search( + RandomVectorScorer scorer, + KnnCollector knnCollector, + HnswGraph graph, + Bits acceptOrds, + DocIdSetIterator entryPointOrds) Review Comment: @seanmacavaney looking at the code, I think you can do what you want if you get access to the underlying `SparseOffHeapVectorValues*` implementation. Then you can use the `IndexedDISI` to advance to each matched doc & use `disi.index()` to get the corresponding ordinal. Maybe `FlatVectorsReader` can have a method called `DocIdSetIterator getVectorOrdinals(String field, DocIdSetIterator docIdIterator)` ? Or `RandomAccessVectorValues` can have such a method. Both of these interfaces are experimental, so changing them is OK. -- 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: issues-unsubscr...@lucene.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org For additional commands, e-mail: issues-h...@lucene.apache.org