search.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import json
  2. from cgitb import reset
  3. from concurrent.futures import ThreadPoolExecutor
  4. from typing import List
  5. from fastapi import APIRouter, BackgroundTasks
  6. from schemas import ResponseWrapper
  7. from schemas.schemas import Query, ContentData
  8. from tools_v1 import query_keyword_summary_results, query_keyword_content_results
  9. from utils.data_utils import add_data
  10. from utils.deepseek_utils import get_keywords
  11. from utils.embedding_utils import get_embedding_content_data
  12. router = APIRouter()
  13. # 创建线程池执行器
  14. executor = ThreadPoolExecutor(max_workers=10)
  15. @router.post("/query", response_model=ResponseWrapper)
  16. async def query_keyword(query: Query):
  17. print(query.text)
  18. keywords = get_keywords(query.text)['keywords']
  19. print(keywords)
  20. summary_res = query_keyword_summary_results(keywords)
  21. content_res = query_keyword_content_results(keywords)
  22. embedding_res = get_embedding_content_data(query.text)
  23. res = {'summary_results': summary_res, 'content_results': content_res, 'embedding_results': embedding_res}
  24. return ResponseWrapper(
  25. status_code=200,
  26. detail="success",
  27. data=res
  28. )
  29. @router.post("/add/data", response_model=ResponseWrapper)
  30. async def query_keyword(content_list: List[ContentData]):
  31. res_list = []
  32. for content in content_list:
  33. if content.body_text:
  34. print(content.body_text)
  35. res = add_data(content.body_text)
  36. res_list.append(res)
  37. return ResponseWrapper(
  38. status_code=200,
  39. detail="success",
  40. data=res_list
  41. )
  42. # @router.post("/query/keyword/content", response_model=ResponseWrapper)
  43. # async def query_keyword(query: Query):
  44. # res = query_keyword_content_results(query.text)
  45. # return ResponseWrapper(
  46. # status_code=200,
  47. # detail="success",
  48. # data=res
  49. # )
  50. # @router.post("/query/embedding", response_model=ResponseWrapper)
  51. # async def query_keyword(query: Query):
  52. # res = query_embedding_results(query.text)
  53. # return ResponseWrapper(
  54. # status_code=200,
  55. # detail="success",
  56. # data=res
  57. # )