Search by tag, category and author without plugin

I can think of two options:

  1. Multiple WP_Queries, each for normal search, taxonomies and meta. And merge the results you get from each.

OR

  1. A WPDB query, with join between _post, _postmeta, _terms(and all tables related to terms).

Although I will prefer 1st method, it’s your choice what you are comfortable with and performance you are expecting, in term of resource ans speed.

Edit:

$q1 = get_posts(array(
    'post_status' => 'publish',
    'posts_per_page' => '-1',
    's' => get_search_query()
    )
);

$q2 = get_posts(array(
    'post_status' => 'publish',
    'posts_per_page' => '-1',
    'tax_query' => array(
            //your query
        )
    )
);

$merged = array_merge($q1, $q2);

Not exact query but just to give you an idea. Please check for any syntax errors as I haven’t tested it.