mirror of
https://github.com/basicmachines-co/basic-memory
synced 2026-06-21 13:47:35 +00:00
020957cd76
Signed-off-by: phernandez <paul@basicmachines.co> Co-authored-by: phernandez <paul@basicmachines.co> Co-authored-by: Claude <noreply@anthropic.com>
37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
"""Router for search operations."""
|
|
|
|
from fastapi import APIRouter, BackgroundTasks
|
|
|
|
from basic_memory.api.routers.utils import to_search_results
|
|
from basic_memory.schemas.search import SearchQuery, SearchResponse
|
|
from basic_memory.deps import SearchServiceDep, EntityServiceDep
|
|
|
|
router = APIRouter(prefix="/search", tags=["search"])
|
|
|
|
|
|
@router.post("/", response_model=SearchResponse)
|
|
async def search(
|
|
query: SearchQuery,
|
|
search_service: SearchServiceDep,
|
|
entity_service: EntityServiceDep,
|
|
page: int = 1,
|
|
page_size: int = 10,
|
|
):
|
|
"""Search across all knowledge and documents."""
|
|
limit = page_size
|
|
offset = (page - 1) * page_size
|
|
results = await search_service.search(query, limit=limit, offset=offset)
|
|
search_results = await to_search_results(entity_service, results)
|
|
return SearchResponse(
|
|
results=search_results,
|
|
current_page=page,
|
|
page_size=page_size,
|
|
)
|
|
|
|
|
|
@router.post("/reindex")
|
|
async def reindex(background_tasks: BackgroundTasks, search_service: SearchServiceDep):
|
|
"""Recreate and populate the search index."""
|
|
await search_service.reindex_all(background_tasks=background_tasks)
|
|
return {"status": "ok", "message": "Reindex initiated"}
|