File size: 1,278 Bytes
b77332f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
"""Command-line entry: `photon-route "<query>" [--top-k N]`."""

from __future__ import annotations

import argparse
import json
import sys

from photon_route.corpus import load_fixture
from photon_route.encode import encode_corpus
from photon_route.retrieve import rank_against


def main() -> int:
    p = argparse.ArgumentParser(prog="photon-route")
    p.add_argument("query", help="text to rank fixture documents against")
    p.add_argument("--top-k", type=int, default=5)
    p.add_argument("--json", action="store_true", help="emit JSON")
    args = p.parse_args()

    corpus = encode_corpus(load_fixture())
    results = rank_against(corpus, args.query, top_k=args.top_k)

    if args.json:
        print(
            json.dumps(
                [
                    {
                        "rank": i + 1,
                        "score": r.score,
                        "text": r.doc.doc.text,
                        "meta": r.doc.doc.meta,
                    }
                    for i, r in enumerate(results)
                ],
                indent=2,
            )
        )
    else:
        for i, r in enumerate(results, 1):
            print(f"{i:>2}. {r.score:.4f}  {r.doc.doc.text}")

    return 0


if __name__ == "__main__":
    sys.exit(main())