def search_and_rank_query(config, query, inverted_index, inverted_docs, k, avg_doc_len):
    p = Parse(config)
    query_as_list = p.parse_sentence(query)[0]
    searcher = Searcher(config, inverted_index, inverted_docs)
    query_dict = searcher.get_query_dict(query_as_list)
    relevant_docs, query_vector = searcher.relevant_docs_from_posting(query_dict)
    ranked_docs = searcher.ranker.rank_relevant_docs(relevant_docs, query_vector, avg_doc_len)
    return searcher.ranker.retrieve_top_k(ranked_docs, k)