All Implemented Interfaces:
HasIndexSlice

public class SampleReader extends FloatVectorValues implements HasIndexSlice
A reader of vector values that samples a subset of the vectors.
  • Field Details

  • Constructor Details

  • Method Details

    • size

      public int size()
      Description copied from class: KnnVectorValues
      Return the number of vectors for this field.
      Specified by:
      size in class KnnVectorValues
      Returns:
      the number of vectors returned by this iterator
    • dimension

      public int dimension()
      Description copied from class: KnnVectorValues
      Return the dimension of the vectors
      Specified by:
      dimension in class KnnVectorValues
    • copy

      public FloatVectorValues copy() throws IOException
      Description copied from class: KnnVectorValues
      Creates a new copy of this KnnVectorValues. This is helpful when you need to access different values at once, to avoid overwriting the underlying vector returned.
      Specified by:
      copy in class FloatVectorValues
      Throws:
      IOException
    • getSlice

      public IndexInput getSlice()
      Description copied from interface: HasIndexSlice
      Returns an IndexInput from which to read this instance's values.
      Specified by:
      getSlice in interface HasIndexSlice
    • vectorValue

      public float[] vectorValue(int targetOrd) throws IOException
      Description copied from class: FloatVectorValues
      Return the vector value for the given vector ordinal which must be in [0, size() - 1], otherwise IndexOutOfBoundsException is thrown. The returned array may be shared across calls.
      Specified by:
      vectorValue in class FloatVectorValues
      Returns:
      the vector value
      Throws:
      IOException
    • getVectorByteLength

      public int getVectorByteLength()
      Description copied from class: KnnVectorValues
      Returns the vector byte length, defaults to dimension multiplied by float byte size
      Overrides:
      getVectorByteLength in class KnnVectorValues
    • ordToDoc

      public int ordToDoc(int ord)
      Description copied from class: KnnVectorValues
      Return the docid of the document indexed with the given vector ordinal. This default implementation returns the argument and is appropriate for dense values implementations where every doc has a single value.
      Overrides:
      ordToDoc in class KnnVectorValues
    • getAcceptOrds

      public Bits getAcceptOrds(Bits acceptDocs)
      Description copied from class: KnnVectorValues
      Returns a Bits accepting docs accepted by the argument and having a vector value
      Overrides:
      getAcceptOrds in class KnnVectorValues
    • createSampleReader

      public static SampleReader createSampleReader(FloatVectorValues origin, int k, long seed)
    • reservoirSample

      public static int[] reservoirSample(int n, int k, long seed)
      Sample k elements from n elements according to reservoir sampling algorithm.
      Parameters:
      n - number of elements
      k - number of samples
      seed - random seed
      Returns:
      array of k samples
    • reservoirSampleFromArray

      public static int[] reservoirSampleFromArray(int[] origin, int k, long seed)
      Sample k elements from the origin array using reservoir sampling algorithm.
      Parameters:
      origin - original array
      k - number of samples
      seed - random seed
      Returns:
      array of k samples