source_plan.py 951 B

123456789101112131415161718192021222324252627282930313233
  1. """搜索源规划 —— 根据 SearchIntent 生成多源召回策略与优先级."""
  2. from __future__ import annotations
  3. def openalex_publication_year_filter(year_from: int | None, year_to: int | None) -> str | None:
  4. yf = year_from
  5. yt = year_to
  6. if yf is not None:
  7. try:
  8. yf_i = int(yf)
  9. except (TypeError, ValueError):
  10. yf_i = None
  11. else:
  12. yf_i = None
  13. if yt is not None:
  14. try:
  15. yt_i = int(yt)
  16. except (TypeError, ValueError):
  17. yt_i = None
  18. else:
  19. yt_i = None
  20. if yf_i is not None and yt_i is not None:
  21. if yf_i > yt_i:
  22. yf_i, yt_i = yt_i, yf_i
  23. if yf_i == yt_i:
  24. return f"publication_year:{yf_i}"
  25. return f"publication_year:{yf_i}-{yt_i}"
  26. if yf_i is not None:
  27. return f"publication_year:>={yf_i}"
  28. if yt_i is not None:
  29. return f"publication_year:<={yt_i}"
  30. return None