def search_and_rank_query(query, inverted_index, k, stemming, output_path):
    p = Parse(stemming)

    query_as_list = [term.text.lower() for term in p.parse_sentence(query)]

    searcher = Searcher(inverted_index, os.path.join(output_path, PostingFile))

    w_of_term_in_query = searcher.CalculateW(query_as_list)

    relevant_docs = searcher.relevant_docs_from_posting(list(w_of_term_in_query.keys()))

    ranked_docs = searcher.ranker.rank_relevant_doc(relevant_docs, w_of_term_in_query)
    output = searcher.ranker.retrieve_top_k(ranked_docs, k)
    return output