Using pre_get_posts may work. Can you try something similar to the following and let me know if it meets your needs:
function search_filter($query) {
if ( !is_admin() && $query->is_main_query() ) {
if ($query->is_search) {
$query->set('post_type', array( 'post', 'movie' ) );
//Should do some sanitation on $GET too
if(isset($_GET['author'])){ //Change to your field dropdown name
$query->set('meta_key', 'author'); //change to custom field name
$query->set('meta_value', $_GET['author']);
}
else if(isset($_GET['pubyear'])){
$query->set('meta_key', 'pubyear');
$query->set('meta_value', $_GET['pubyear']);
}
}
}
}
add_action('pre_get_posts','search_filter');
UPDATE: May also be better to use $query->set('meta_query'), array(..)...
depending on your needs