Spaces:
Sleeping
Sleeping
| #!/usr/bin/env python3 | |
| """ | |
| 测试集成代码中的OpenAlex排序问题 | |
| """ | |
| import sys | |
| import os | |
| sys.path.append(os.path.dirname(os.path.abspath(__file__))) | |
| from reviewer_recommendation.searcher import OpenAlexSearcher, DynamicAcademicSearcher | |
| from reviewer_recommendation.models import PaperInfo | |
| def test_integration_sorting(): | |
| """测试集成代码中的排序问题""" | |
| print("=== 测试集成代码中的OpenAlex排序 ===") | |
| # 创建测试用的论文信息 | |
| paper = PaperInfo( | |
| title="Molecular and Structural Biology Cryo-EM", | |
| abstract="Test abstract for cryo-EM research", | |
| keywords=["cryo-EM", "structural biology", "molecular biology"] | |
| ) | |
| # 创建OpenAlex检索器 | |
| openalex_searcher = OpenAlexSearcher(limit=10) | |
| # 创建动态检索器 | |
| dynamic_searcher = DynamicAcademicSearcher(openalex_searcher=openalex_searcher) | |
| print(f"测试论文: {paper.title}") | |
| print("=" * 60) | |
| # 测试直接调用OpenAlexSearcher | |
| print("\n--- 直接测试OpenAlexSearcher ---") | |
| query = "Molecular and Structural Biology Cryo-EM" | |
| print("1. 按引用量排序:") | |
| results_cited = openalex_searcher.search(query, sort_by_citations=True) | |
| if results_cited: | |
| citations = [r.get('citedByCount', 0) for r in results_cited] | |
| print(f" 引用量: {citations[:5]}") | |
| print(f" 最大引用量: {max(citations)}") | |
| print("\n2. 按相关性排序:") | |
| results_relevance = openalex_searcher.search(query, sort_by_citations=False) | |
| if results_relevance: | |
| citations = [r.get('citedByCount', 0) for r in results_relevance] | |
| print(f" 引用量: {citations[:5]}") | |
| print(f" 最大引用量: {max(citations)}") | |
| # 测试DynamicAcademicSearcher | |
| print("\n--- 测试DynamicAcademicSearcher ---") | |
| try: | |
| channel1_results, channel2_results = dynamic_searcher.search_with_dynamic_queries(paper, num_queries=1) | |
| print(f"通道1结果数量: {len(channel1_results)}") | |
| if channel1_results: | |
| citations1 = [r.get('citedByCount', 0) for r in channel1_results] | |
| print(f"通道1引用量: {citations1[:5]}") | |
| print(f"通道1最大引用量: {max(citations1)}") | |
| print(f"通道2结果数量: {len(channel2_results)}") | |
| if channel2_results: | |
| citations2 = [r.get('citedByCount', 0) for r in channel2_results] | |
| print(f"通道2引用量: {citations2[:5]}") | |
| print(f"通道2最大引用量: {max(citations2)}") | |
| # 对比分析 | |
| if channel1_results and channel2_results: | |
| max1 = max([r.get('citedByCount', 0) for r in channel1_results]) | |
| max2 = max([r.get('citedByCount', 0) for r in channel2_results]) | |
| print(f"\n--- 对比分析 ---") | |
| print(f"通道1最大引用量: {max1}") | |
| print(f"通道2最大引用量: {max2}") | |
| if max1 < max2: | |
| print("❌ 问题确认:通道1的引用量反而更低!") | |
| else: | |
| print("✅ 通道1工作正常") | |
| except Exception as e: | |
| print(f"DynamicAcademicSearcher测试失败: {str(e)}") | |
| import traceback | |
| traceback.print_exc() | |
| if __name__ == "__main__": | |
| test_integration_sorting() | |