diff --git a/app/api.py b/app/api.py index 539f200..2c1f4e5 100644 --- a/app/api.py +++ b/app/api.py @@ -1,7 +1,27 @@ +from pathlib import Path + from ninja import NinjaAPI +from app import settings +from mwmbl.indexer.paths import INDEX_NAME +from mwmbl.tinysearchengine import search +from mwmbl.tinysearchengine.completer import Completer +from mwmbl.tinysearchengine.indexer import TinyIndex, Document +from mwmbl.tinysearchengine.rank import HeuristicRanker + api = NinjaAPI(version="1.0.0") +index_path = Path(settings.DATA_PATH) / INDEX_NAME +tiny_index = TinyIndex(item_factory=Document, index_path=index_path) +tiny_index.__enter__() + +completer = Completer() +ranker = HeuristicRanker(tiny_index, completer) + +search_router = search.create_router(ranker) + +api.add_router("/search/", search_router) + @api.get("/hello") def hello(request): diff --git a/app/settings.py b/app/settings.py index a067541..f483d35 100644 --- a/app/settings.py +++ b/app/settings.py @@ -121,3 +121,9 @@ STATIC_URL = 'static/' # https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' + +# ===================== Custom Settings ========================= + +DATA_PATH = "./devdata" + + diff --git a/mwmbl/tinysearchengine/search.py b/mwmbl/tinysearchengine/search.py index f9ecace..bd8e54a 100644 --- a/mwmbl/tinysearchengine/search.py +++ b/mwmbl/tinysearchengine/search.py @@ -1,6 +1,6 @@ from logging import getLogger -from fastapi import APIRouter +from ninja import Router from mwmbl.tinysearchengine.rank import HeuristicRanker @@ -10,8 +10,8 @@ logger = getLogger(__name__) SCORE_THRESHOLD = 0.25 -def create_router(ranker: HeuristicRanker) -> APIRouter: - router = APIRouter(prefix="/search", tags=["search"]) +def create_router(ranker: HeuristicRanker) -> Router: + router = Router(tags=["search"]) @router.get("") def search(s: str):