Class NeighborArray


  • public class NeighborArray
    extends Object
    NeighborArray encodes the neighbors of a node and their mutual scores in the HNSW graph as a pair of growable arrays. Nodes are arranged in the sorted order of their scores in descending order (if scoresDescOrder is true), or in the ascending order of their scores (if scoresDescOrder is false)
    NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.
    • Constructor Detail

      • NeighborArray

        public NeighborArray​(int maxSize,
                             boolean descOrder)
    • Method Detail

      • addInOrder

        public void addInOrder​(int newNode,
                               float newScore)
        Add a new node to the NeighborArray. The new node must be worse than all previously stored nodes. This cannot be called after addOutOfOrder(int, float)
      • addOutOfOrder

        public void addOutOfOrder​(int newNode,
                                  float newScore)
        Add node and newScore but do not insert as sorted
      • sort

        public int[] sort​(RandomVectorScorer scorer)
                   throws IOException
        Sort the array according to scores, and return the sorted indexes of previous unsorted nodes (unchecked nodes)
        Returns:
        indexes of newly sorted (unchecked) nodes, in ascending order, or null if the array is already fully sorted
        Throws:
        IOException
      • size

        public int size()
      • node

        public int[] node()
        Direct access to the internal list of node ids; provided for efficient writing of the graph
        NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.
      • score

        public float[] score()
      • clear

        public void clear()
      • removeLast

        public void removeLast()
      • removeIndex

        public void removeIndex​(int idx)