Class NeighborArray


  • public class NeighborArray
    extends java.lang.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)
    • Field Summary

      Fields 
      Modifier and Type Field Description
      (package private) int[] node  
      (package private) float[] score  
      private boolean scoresDescOrder  
      private int size  
    • Constructor Summary

      Constructors 
      Constructor Description
      NeighborArray​(int maxSize, boolean descOrder)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void add​(int newNode, float newScore)
      Add a new node to the NeighborArray.
      private int ascSortFindRightMostInsertionPoint​(float newScore)  
      void clear()  
      private int descSortFindRightMostInsertionPoint​(float newScore)  
      void insertSorted​(int newNode, float newScore)
      Add a new node to the NeighborArray into a correct sort position according to its score.
      int[] node()
      Direct access to the internal list of node ids; provided for efficient writing of the graph
      void removeIndex​(int idx)  
      void removeLast()  
      float[] score()  
      int size()  
      java.lang.String toString()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • scoresDescOrder

        private final boolean scoresDescOrder
      • size

        private int size
      • score

        float[] score
      • node

        int[] node
    • Constructor Detail

      • NeighborArray

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

      • add

        public void add​(int newNode,
                        float newScore)
        Add a new node to the NeighborArray. The new node must be worse than all previously stored nodes.
      • insertSorted

        public void insertSorted​(int newNode,
                                 float newScore)
        Add a new node to the NeighborArray into a correct sort position according to its score.
      • size

        public int size()
      • node

        public int[] node()
        Direct access to the internal list of node ids; provided for efficient writing of the graph
      • score

        public float[] score()
      • clear

        public void clear()
      • removeLast

        public void removeLast()
      • removeIndex

        public void removeIndex​(int idx)
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • ascSortFindRightMostInsertionPoint

        private int ascSortFindRightMostInsertionPoint​(float newScore)
      • descSortFindRightMostInsertionPoint

        private int descSortFindRightMostInsertionPoint​(float newScore)