code: func (bt *Translator) BulkAdd(field string, values [][]byte) error {
  	var batchSize uint64 = 10000
  	var batch uint64
  	for batch*batchSize < uint64(len(values)) {
  		err := bt.Db.Batch(func(tx *bolt.Tx) error {
  			fib := tx.Bucket(idBucket).Bucket([]byte(field))
  			fvb := tx.Bucket(valBucket).Bucket([]byte(field))
  
  			for i := batch * batchSize; i < (batch+1)*batchSize && i < uint64(len(values)); i++ {
  				idBytes := make([]byte, 8)
  				binary.BigEndian.PutUint64(idBytes, i)
  				valBytes := values[i]
  				err := fib.Put(idBytes, valBytes)
  				if err != nil {
  					return errors.Wrap(err, "putting into idKey bucket")
  				}
  				err = fvb.Put(valBytes, idBytes)
  				if err != nil {
  					return errors.Wrap(err, "putting into valKey bucket")
  				}
  			}
  			return nil
  		})
  		if err != nil {
  			return errors.Wrap(err, "inserting batch")
  		}
  		batch++
  	}
  	return nil
  }
docs: // BulkAdd adds many values to a field at once, allocating ids.