| name | pubmed-multi-source-search |
| description | Cross-database search using multiple academic sources. Triggers: 跨資料庫, multi-source, Semantic Scholar, OpenAlex, CORE, Europe PMC, 綜合搜尋 |
多來源綜合搜尋
描述
整合 PubMed、Europe PMC、CORE、Semantic Scholar、OpenAlex 等多個學術資料庫,進行全面的跨來源搜尋。
觸發條件
- 「搜尋所有來源」
- 「跨資料庫搜尋」
- 「找更多來源」
- 提到 Semantic Scholar、OpenAlex、CORE
- 需要開放取用論文
資料庫特色比較
| 資料庫 | 收錄量 | 特色 | 最適合 |
|---|
| PubMed | 35M+ | 生物醫學權威 | 臨床/基礎醫學 |
| Europe PMC | 33M+ | 含預印本、全文 | 歐洲研究、預印本 |
| CORE | 200M+ | 最大 OA 庫 | 開放取用全文 |
| Semantic Scholar | 200M+ | AI 分析、引用圖譜 | 跨領域、影響力分析 |
| OpenAlex | 250M+ | 開放學術圖譜 | 大規模分析、趨勢研究 |
各資料庫工具
PubMed(核心)
search_literature(query="remimazolam sedation", limit=30)
generate_search_queries(topic="remimazolam")
Europe PMC
search_europe_pmc(query="remimazolam", limit=30)
get_europe_pmc_fulltext(pmcid="PMC6939411")
get_europe_pmc_citations(pmid="30217674")
CORE
search_core(query="machine learning radiology", limit=30)
search_core_fulltext(query="adverse events", limit=20)
get_core_fulltext(core_id="12345678")
find_in_core(title="Remimazolam versus midazolam...")
Semantic Scholar
search_semantic_scholar(query="deep learning medical imaging", limit=30)
get_semantic_scholar_paper(paper_id="...")
OpenAlex
search_openalex(query="CRISPR gene editing", limit=30)
get_openalex_work(work_id="W2741809807")
search_openalex_authors(query="Jennifer Doudna")
跨來源搜尋策略
策略 1:互補搜尋
不同資料庫強項不同,互相補充:
pm_results = search_literature(query="COVID-19 vaccine efficacy", limit=50)
epmc_results = search_europe_pmc(query="COVID-19 vaccine efficacy", source="preprint", limit=30)
ss_results = search_semantic_scholar(query="COVID-19 vaccine efficacy", limit=30)
core_results = search_core(query="COVID-19 vaccine efficacy", limit=30)
策略 2:全文優先
需要全文時的搜尋順序:
results = search_literature(query="...", limit=50)
access = analyze_fulltext_access(pmids="last")
for pmid in access["subscription_required_pmids"]:
epmc = search_europe_pmc(query=f"EXT_ID:{pmid}")
for pmid in still_missing:
details = fetch_article_details(pmids=pmid)
core = find_in_core(title=details["articles"][0]["title"])
策略 3:影響力分析
結合 Semantic Scholar 的引用分析:
pm = search_literature(query="...", limit=30)
for article in pm["articles"]:
ss = search_semantic_scholar(query=article["title"], limit=1)
if ss["papers"]:
details = get_semantic_scholar_paper(paper_id=ss["papers"][0]["paperId"])
print(f"Citations: {details['citationCount']}")
print(f"Influential Citations: {details['influentialCitationCount']}")
完整跨來源工作流程
情境:全面搜尋某主題
pm_results = search_literature(
query="machine learning drug discovery",
limit=50
)
epmc_results = search_europe_pmc(query="machine learning drug discovery", limit=30)
core_results = search_core(query="machine learning drug discovery", limit=30)
ss_results = search_semantic_scholar(query="machine learning drug discovery", limit=30)
oa_results = search_openalex(query="machine learning drug discovery", limit=30)
all_titles = set()
unique_papers = []
for source, results in [
("PubMed", pm_results),
("Europe PMC", epmc_results),
("CORE", core_results),
("Semantic Scholar", ss_results),
("OpenAlex", oa_results)
]:
for paper in results["articles"]:
title_key = paper["title"].lower()[:50]
if title_key not in all_titles:
all_titles.add(title_key)
paper["source"] = source
unique_papers.append(paper)
print(f"Total unique papers: {len(unique_papers)}")
各來源的獨特功能
Europe PMC 獨有
search_europe_pmc(query="...", source="preprint")
search_europe_pmc(query="...", has_annotations=True)
get_europe_pmc_supplementary(pmcid="PMC...")
CORE 獨有
search_core_fulltext(query="specific methodology term")
search_core(query="...", open_access=True)
Semantic Scholar 獨有
paper = get_semantic_scholar_paper(paper_id="...")
print(paper["influentialCitationCount"])
print(paper["tldr"])
for citation in paper["citations"]:
print(citation["intent"])
OpenAlex 獨有
author = search_openalex_authors(query="Jennifer Doudna")[0]
print(f"h-index: {author['hIndex']}")
print(f"Works count: {author['worksCount']}")
works = search_openalex(query="...", institution="Harvard")
work = get_openalex_work(work_id="...")
print(work["open_access"]["oa_status"])
結果整合技巧
去重方法
def deduplicate_papers(all_results):
"""基於標題相似度去重"""
seen_titles = {}
unique = []
for paper in all_results:
title_key = paper["title"].lower()
title_key = re.sub(r'[^\w\s]', '', title_key)[:100]
if title_key not in seen_titles:
seen_titles[title_key] = paper
unique.append(paper)
else:
seen_titles[title_key]["sources"].append(paper["source"])
return unique
排序優先級
def score_paper(paper):
"""計算論文優先分數"""
score = 0
score += len(paper.get("sources", [])) * 10
if paper.get("fulltext_available"):
score += 20
score += min(paper.get("citation_count", 0) / 10, 50)
if paper.get("year", 0) >= 2023:
score += 15
return score
papers.sort(key=score_paper, reverse=True)
使用場景建議
| 需求 | 推薦來源組合 |
|---|
| 臨床研究 | PubMed + Europe PMC |
| 跨領域研究 | Semantic Scholar + OpenAlex |
| 開放取用優先 | CORE + Europe PMC |
| 最新研究 | Europe PMC (preprint) |
| 影響力分析 | Semantic Scholar + OpenAlex |
| 全面覆蓋 | 全部五個來源 |
小技巧
1. 並行搜尋
2. 先 PubMed 後擴展
3. 標題匹配找全文
find_in_core(title="exact paper title")
4. 引用分析用 Semantic Scholar