def METHOD_NAME(topK_path):
    queries = OrderedDict()
    topK_docs = OrderedDict()
    topK_pids = OrderedDict()
    print_message("#> Loading the top-k per query from", topK_path, "...")
    with open(topK_path) as f:
        for line_idx, line in enumerate(f):
            if line_idx and line_idx % (10*1000*1000) == 0:
                print(line_idx, end=' ', flush=True)
            qid, pid, query, passage = line.split('\t')
            qid, pid = int(qid), int(pid)
            assert (qid not in queries) or (queries[qid] == query)
            queries[qid] = query
            topK_docs[qid] = topK_docs.get(qid, [])
            topK_docs[qid].append(passage)
            topK_pids[qid] = topK_pids.get(qid, [])
            topK_pids[qid].append(pid)
        print()
    assert all(len(topK_pids[qid]) == len(set(topK_pids[qid])) for qid in topK_pids)
    Ks = [len(topK_pids[qid]) for qid in topK_pids]
    print_message("#> max(Ks) =", max(Ks), ", avg(Ks) =", round(sum(Ks) / len(Ks), 2))
    print_message("#> Loaded the top-k per query for", len(queries), "unique queries.\n")
    return queries, topK_docs, topK_pids