search.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. from concurrent.futures import ThreadPoolExecutor
  2. from fastapi import APIRouter
  3. from schemas import ResponseWrapper
  4. from schemas.schemas import ContentParam, DatasetParam
  5. from service.content_service import get_contents, add_contents, get_content
  6. from service.dataset_service import get_datasets, add_datasets
  7. from utils.embedding_utils import get_embedding_content_data
  8. router = APIRouter()
  9. # 创建线程池执行器
  10. executor = ThreadPoolExecutor(max_workers=10)
  11. @router.get("/query", response_model=ResponseWrapper)
  12. async def query_keyword(query, datasetIds):
  13. print(query)
  14. print(datasetIds)
  15. embedding_res = get_embedding_content_data(query, datasetIds.split(','))
  16. res = {'results': embedding_res}
  17. return ResponseWrapper(
  18. status_code=200,
  19. detail="success",
  20. data=res
  21. )
  22. @router.get("/content/list", response_model=ResponseWrapper)
  23. async def content_list(page: int = 1, pageSize: int = 10, datasetId: int = None):
  24. data = get_contents(page, pageSize, datasetId)
  25. return ResponseWrapper(
  26. status_code=200,
  27. detail="success",
  28. data=data
  29. )
  30. @router.post("/content/add", response_model=ResponseWrapper)
  31. async def add_content(content_param: ContentParam):
  32. res = add_contents(content_param)
  33. return ResponseWrapper(
  34. status_code=200,
  35. detail="success",
  36. data=res
  37. )
  38. @router.get("/dataset/list", response_model=ResponseWrapper)
  39. async def dataset_list():
  40. data = get_datasets()
  41. return ResponseWrapper(
  42. status_code=200,
  43. detail="success",
  44. data=data
  45. )
  46. @router.post("/dataset/add", response_model=ResponseWrapper)
  47. async def get_dataset(dataset_param : DatasetParam):
  48. res = add_datasets(dataset_param)
  49. return ResponseWrapper(
  50. status_code=200,
  51. detail="success",
  52. data=res
  53. )
  54. @router.get("/content/get", response_model=ResponseWrapper)
  55. async def content_get(docId):
  56. data = get_content(docId)
  57. return ResponseWrapper(
  58. status_code=200,
  59. detail="success",
  60. data=data
  61. )