search.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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.deepseek_utils import get_keywords
  10. from utils.json_parse_utils import process_texts_concurrently
  11. router = APIRouter()
  12. # 创建线程池执行器
  13. executor = ThreadPoolExecutor(max_workers=10)
  14. @router.post("/query", response_model=ResponseWrapper)
  15. async def query_keyword(query: Query):
  16. keywords = get_keywords(query.text)['keywords']
  17. print(keywords)
  18. summary_res = query_keyword_summary_results(keywords)
  19. content_res = query_keyword_content_results(keywords)
  20. res = {'summary_results': summary_res, 'content_results': content_res}
  21. return ResponseWrapper(
  22. status_code=200,
  23. detail="success",
  24. data=res
  25. )
  26. @router.post("/add/data", response_model=ResponseWrapper)
  27. async def query_keyword(content_list: List[ContentData]):
  28. param = []
  29. for content in content_list:
  30. param.append({'body_text': content.body_text})
  31. print(json.dumps(param, ensure_ascii=False))
  32. # 将处理任务提交给后台线程池
  33. executor.submit(process_texts_concurrently, param)
  34. return ResponseWrapper(
  35. status_code=200,
  36. detail="success",
  37. data="正在后台处理中"
  38. )
  39. # @router.post("/query/keyword/content", response_model=ResponseWrapper)
  40. # async def query_keyword(query: Query):
  41. # res = query_keyword_content_results(query.text)
  42. # return ResponseWrapper(
  43. # status_code=200,
  44. # detail="success",
  45. # data=res
  46. # )
  47. # @router.post("/query/embedding", response_model=ResponseWrapper)
  48. # async def query_keyword(query: Query):
  49. # res = query_embedding_results(query.text)
  50. # return ResponseWrapper(
  51. # status_code=200,
  52. # detail="success",
  53. # data=res
  54. # )