The whole code should look something like this
add_filter( 'adverts_form_load', function( $form ) {
if( $form['name'] != 'search' ) {
return $form;
}
$form['field'][] = array(
"name" => "rmp_avg_rating",
"type" => "adverts_field_select",
"order" => 20,
"label" => __("Rating", "adverts"),
"max_choices" => 1,
"empty_option" => true,
"empty_option_text" => "Select Rating",
"options" => array(
array( "value" => 1, "text" => "1 Star" ),
array( "value" => 2, "text" => "2 Stars" ),
array( "value" => 3, "text" => "3 Stars" ),
array( "value" => 4, "text" => "4 Stars" ),
array( "value" => 5, "text" => "5 Stars" ),
),
"meta" => array(
"search_group" => "visible",
"search_type" => "half"
)
);
return $form;
} );
add_filter( 'adverts_list_query', function( $args ) {
if( ! adverts_request( "rmp_avg_rating" ) ) {
return $args;
}
$rating = adverts_request( "rmp_avg_rating" );
$args["meta_query"]["rmp_avg_rating_min"] = array(
"key" => "rmp_avg_rating",
"value" => $rating,
"type" => "NUMERIC"
);
return $args;
} );
although i am guessing the rmp_avg_rating is a floating-point number so the current search will find only the ratings that exactly match 1, 2, 3, 4 or 5.
In this case, the search part would need to be something like
$args["meta_query"]["rmp_avg_rating_min"] = array(
"key" => "rmp_avg_rating",
"value" => $rating,
"compare" => ">=",
"type" => "NUMERIC"
);
$args["meta_query"]["rmp_avg_rating_max"] = array(
"key" => "rmp_avg_rating",
"value" => $rating+1,
"compare" => "<",
"type" => "NUMERIC"
);