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)