4343import  org .elasticsearch .logging .Logger ;
4444
4545import  java .io .IOException ;
46- import  java .io .UncheckedIOException ;
4746import  java .nio .ByteBuffer ;
4847import  java .nio .ByteOrder ;
4948import  java .util .ArrayList ;
@@ -470,7 +469,6 @@ public NodesIterator getNodesOnLevel(int level) {
470469    @ SuppressForbidden (reason  = "require usage of Lucene's IOUtils#deleteFilesIgnoringExceptions(...)" )
471470    public  void  mergeOneField (FieldInfo  fieldInfo , MergeState  mergeState ) throws  IOException  {
472471        flatVectorWriter .mergeOneField (fieldInfo , mergeState );
473-         FloatVectorValues  vectorValues  = KnnVectorsWriter .MergedVectorValues .mergeFloatVectorValues (fieldInfo , mergeState );
474472        // save merged vector values to a temp file 
475473        final  int  numVectors ;
476474        String  tempRawVectorsFileName  = null ;
@@ -487,9 +485,8 @@ public void mergeOneField(FieldInfo fieldInfo, MergeState mergeState) throws IOE
487485        }
488486        try  (IndexInput  in  = mergeState .segmentInfo .dir .openInput (tempRawVectorsFileName , IOContext .DEFAULT )) {
489487            DatasetOrVectors  datasetOrVectors ;
490- 
491488            var  input  = FilterIndexInput .unwrapOnlyTest (in );
492-             if  (input  instanceof  MemorySegmentAccessInput  memorySegmentAccessInput ) {
489+             if  (input  instanceof  MemorySegmentAccessInput  memorySegmentAccessInput  &&  numVectors  >=  MIN_NUM_VECTORS_FOR_GPU_BUILD ) {
493490                var  ds  = DatasetUtils .getInstance ().fromInput (memorySegmentAccessInput , numVectors , fieldInfo .getVectorDimension ());
494491                datasetOrVectors  = DatasetOrVectors .fromDataset (ds );
495492            } else  {
@@ -521,7 +518,6 @@ private static int writeFloatVectorValues(FieldInfo fieldInfo, IndexOutput out,
521518        for  (int  docV  = iterator .nextDoc (); docV  != NO_MORE_DOCS ; docV  = iterator .nextDoc ()) {
522519            numVectors ++;
523520            float [] vector  = floatVectorValues .vectorValue (iterator .index ());
524-             out .writeInt (iterator .docID ());
525521            buffer .asFloatBuffer ().put (vector );
526522            out .writeBytes (buffer .array (), buffer .array ().length );
527523        }
@@ -532,12 +528,12 @@ private static FloatVectorValues getFloatVectorValues(FieldInfo fieldInfo, Index
532528        if  (numVectors  == 0 ) {
533529            return  FloatVectorValues .fromFloats (List .of (), fieldInfo .getVectorDimension ());
534530        }
535-         final  long  length  = (long ) Float .BYTES  * fieldInfo .getVectorDimension () +  Integer . BYTES ;
531+         final  long  length  = (long ) Float .BYTES  * fieldInfo .getVectorDimension ();
536532        final  float [] vector  = new  float [fieldInfo .getVectorDimension ()];
537533        return  new  FloatVectorValues () {
538534            @ Override 
539535            public  float [] vectorValue (int  ord ) throws  IOException  {
540-                 randomAccessInput .seek (ord  * length  +  Integer . BYTES );
536+                 randomAccessInput .seek (ord  * length );
541537                randomAccessInput .readFloats (vector , 0 , vector .length );
542538                return  vector ;
543539            }
@@ -559,12 +555,7 @@ public int size() {
559555
560556            @ Override 
561557            public  int  ordToDoc (int  ord ) {
562-                 try  {
563-                     randomAccessInput .seek (ord  * length );
564-                     return  randomAccessInput .readInt ();
565-                 } catch  (IOException  e ) {
566-                     throw  new  UncheckedIOException (e );
567-                 }
558+                 throw  new  UnsupportedOperationException ("Not implemented" );
568559            }
569560        };
570561    }
0 commit comments