You could break apart the search-string into an array and add each word to it’s own meta-query
$search_query = 'strawberries and cream';
$search_query_array = explode(' ', $search_query); // turn search query string into array of words
$stop_words = ['and','or','that','have','with','this'];
if ( ! empty( $search_query_array ) ) {
foreach( $search_query_array as $index ) { // remove any stop-words from the search query array
if ( in_array($search_query_array[$index], $excluded_words) ) {
unset( $search_query_array[$index] );
}
}
}
$args['meta_query'] = [
'relation' => 'OR', // empty meta_query with or condition
];
if ( ! empty( $search_query_array ) ) {
foreach( $search_query_array as $index ) { // remove any stop-words from the search query array
$word = sanitize_key( $search_query_array[ $index ] );
$args['meta_query'][ 'search_query__' . sanitize_key( $word ) ] = [ // give the meta query a handle for easy access & debugging
'key' => 'ingredient_list',
'value' => sanitize_key( $word ), // or '"' . sanitize_key( $word ) . '"', or '%' . sanitize_key( $word ) . '%'
'compare' => 'LIKE',
]
}
}
var_dump( $args ); // the final meta_query, just needs to be added to wp_query