# Package org.apache.lucene.util.hnsw

Navigable Small-World graph, nominally Hierarchical but currently only has a single layer. Provides efficient approximate nearest neighbor search for high dimensional vectors.

- Interface Summary
  Interface | Description
  --- | ---
  CloseableRandomVectorScorerSupplier | A supplier that creates `RandomVectorScorer` from an ordinal.
  HnswBuilder | Interface for builder building the `OnHeapHnswGraph`
  HnswGraphMerger | Abstraction of merging multiple graphs into one on-heap graph
  IntToIntFunction | Native int to int function
  RandomAccessVectorValues<T> | Provides random access to vectors by dense ordinal.
  RandomVectorScorer | A `RandomVectorScorer` for scoring random nodes in batches against an abstract query.
  RandomVectorScorerSupplier | A supplier that creates `RandomVectorScorer` from an ordinal.

- Class Summary
  Class | Description
  --- | ---
  BlockingFloatHeap | A blocking bounded min heap that stores floats.
  ConcurrentHnswMerger | This merger merges graph in a concurrent manner, by using `HnswConcurrentMergeBuilder`
  FloatHeap | A bounded min heap that stores floats.
  HnswConcurrentMergeBuilder | A graph builder that manages multiple workers, it only supports adding the whole graph all at once.
  HnswGraph | Hierarchical Navigable Small World graph.
  HnswGraph.ArrayNodesIterator | NodesIterator that accepts nodes as an integer array.
  HnswGraph.CollectionNodesIterator | Nodes iterator based on set representation of nodes.
  HnswGraph.NodesIterator | Iterator over the graph nodes on a certain level, Iterator also provides the size – the total number of nodes to be iterated over.
  HnswGraphBuilder | Builder for HNSW graph.
  HnswGraphBuilder.GraphBuilderKnnCollector | A restricted, specialized knnCollector that can be used when building a graph.
  HnswGraphSearcher | Searches an HNSW graph to find nearest neighbors to a query vector.
  IncrementalHnswGraphMerger | This selects the biggest Hnsw graph from the provided merge state and initializes a new HnswGraphBuilder with that graph as a starting point.
  InitializedHnswGraphBuilder | This creates a graph builder that is initialized with the provided HnswGraph.
  NeighborArray | NeighborArray encodes the neighbors of a node and their mutual scores in the HNSW graph as a pair of growable arrays.
  NeighborQueue | NeighborQueue uses a `LongHeap` to store lists of arcs in an HNSW graph, represented as a neighbor node id with an associated score packed together as a sortable long, which is sorted primarily by score.
  OnHeapHnswGraph | An `HnswGraph` where all nodes and connections are held in memory.
  OrdinalTranslatedKnnCollector | Wraps a provided KnnCollector object, translating the provided vectorId ordinal to a documentId
  RandomVectorScorer.AbstractRandomVectorScorer<T> | Creates a default scorer for random access vectors.
  RandomVectorScorerSupplier.ByteScoringSupplier | RandomVectorScorerSupplier for bytes vector
  RandomVectorScorerSupplier.FloatScoringSupplier | RandomVectorScorerSupplier for Float vector