Class Lucene90OnHeapHnswGraph
java.lang.Object
org.apache.lucene.util.hnsw.HnswGraph
org.apache.lucene.backward_codecs.lucene90.Lucene90OnHeapHnswGraph
An
HnswGraph
where all nodes and connections are held in memory. This class is used to
construct the HNSW graph before it's written to the index.-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.lucene.util.hnsw.HnswGraph
HnswGraph.NodesIterator
-
Field Summary
-
Method Summary
Modifier and TypeMethodDescriptionint
getNeighbors
(int node) Returns theNeighborQueue
connected to the given node.getNodesOnLevel
(int level) int
int
static NeighborQueue
search
(float[] query, int topK, int numSeed, RandomAccessVectorValues vectors, VectorSimilarityFunction similarityFunction, HnswGraph graphValues, Bits acceptOrds, int visitedLimit, SplittableRandom random) Searches for the nearest neighbors of a query vector.void
seek
(int level, int targetNode) int
size()
-
Method Details
-
search
public static NeighborQueue search(float[] query, int topK, int numSeed, RandomAccessVectorValues vectors, VectorSimilarityFunction similarityFunction, HnswGraph graphValues, Bits acceptOrds, int visitedLimit, SplittableRandom random) throws IOException Searches for the nearest neighbors of a query vector.- Parameters:
query
- search query vectortopK
- the number of nodes to be returnednumSeed
- the size of the queue maintained while searching, and controls the number of random entry points to samplevectors
- vector valuesgraphValues
- the graph values. May represent the entire graph, or a level in a hierarchical graph.acceptOrds
-Bits
that represents the allowed document ordinals to match, ornull
if they are all allowed to match.random
- a source of randomness, used for generating entry points to the graph- Returns:
- a priority queue holding the closest neighbors found
- Throws:
IOException
-
getNeighbors
Returns theNeighborQueue
connected to the given node.- Parameters:
node
- the node whose neighbors are returned
-
size
public int size() -
seek
public void seek(int level, int targetNode) -
nextNeighbor
public int nextNeighbor()- Specified by:
nextNeighbor
in classHnswGraph
-
numLevels
public int numLevels() -
entryNode
public int entryNode() -
getNodesOnLevel
- Specified by:
getNodesOnLevel
in classHnswGraph
-