create_app.py 892 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. import re
  2. from logging import getLogger
  3. from operator import itemgetter
  4. from pathlib import Path
  5. from urllib.parse import urlparse
  6. from fastapi import FastAPI
  7. from starlette.middleware.cors import CORSMiddleware
  8. from mwmbl.tinysearchengine.completer import Completer
  9. from mwmbl.tinysearchengine.hn_top_domains_filtered import DOMAINS
  10. from mwmbl.tinysearchengine.indexer import TinyIndex, Document
  11. from mwmbl.tinysearchengine.rank import Ranker
  12. logger = getLogger(__name__)
  13. SCORE_THRESHOLD = 0.25
  14. def create(ranker: Ranker):
  15. app = FastAPI()
  16. # Allow CORS requests from any site
  17. app.add_middleware(
  18. CORSMiddleware,
  19. allow_origins=["*"],
  20. allow_headers=["*"],
  21. )
  22. @app.get("/search")
  23. def search(s: str):
  24. return ranker.search(s)
  25. @app.get("/complete")
  26. def complete(q: str):
  27. return ranker.complete(q)
  28. return app