PubMed Database 是一个面向生物医学文献检索的技能,适用于需要从 PubMed 获取文献而非使用通用网络搜索的任务。
用途
该技能用于检索 MEDLINE 或生命科学文献;构建包含 MeSH 术语、字段标签、日期或文章类型的 PubMed 查询;查找 PMID、摘要、出版元数据或相关引文;运行需要可重复检索字符串的系统综述检索;以及直接从 Python、Shell 或其他 HTTP 客户端使用 NCBI E-utilities。
查询构建
从研究问题出发,将其拆分为概念,再用布尔运算符组合概念。基本形式为:concept_1 AND concept_2 AND filter;同义词用 OR 连接;排除项用 NOT。
常用 PubMed 字段标签包括:[ti] 标题、[ab] 摘要、[tiab] 标题或摘要、[au] 作者、[ta] 期刊标题缩写、[mh] MeSH 术语、[majr] 主要 MeSH 主题、[pt] 出版类型、[dp] 出版日期、[la] 语言。
示例查询: diabetes mellitus[mh] AND treatment[tiab] AND systematic review[pt] AND 2023:2026[dp] (metformin[nm] OR insulin[nm]) AND diabetes mellitus, type 2[mh] AND randomized controlled trial[pt] smith ja[au] AND cancer[tiab] AND 2026[dp] AND english[la]
MeSH 与副主题词
当概念有稳定的受控词表术语时优先使用 MeSH。对于新主题或术语多变的情况,将 MeSH 与标题/摘要术语结合使用。副主题词的正确语法是将副主题词放在字段标签之前,例如:diabetes mellitus, type 2/drug therapy[mh];cardiovascular diseases/prevention & control[mh]。仅当主题必须是论文核心时才使用 [majr],它可以提高精确度,但可能遗漏相关工作。
过滤器
出版类型过滤器包括:clinical trial[pt]、meta-analysis[pt]、randomized controlled trial[pt]、review[pt]、systematic review[pt]、guideline[pt]。日期过滤器包括:2026[dp]、2020:2026[dp]、2026/03/15[dp]。可用性过滤器包括:free full text[sb]、hasabstract[text]。
E-utilities 工作流
NCBI E-utilities 支持可重复的 API 工作流:esearch.fcgi 用于搜索并返回 PMID;esummary.fcgi 用于返回轻量级文章元数据;efetch.fcgi 用于以 XML、MEDLINE 或文本格式获取摘要或完整记录;elink.fcgi 用于查找相关文章和链接资源。生产脚本应使用电子邮件和 API 密钥,并将 API 密钥存储在环境变量中,切勿放在提交的文件或命令历史中。
示例代码: import os import time import requests
BASE = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils"
def esearch(query: str, retmax: int = 20) -> list[str]: params = { "db": "pubmed", "term": query, "retmode": "json", "retmax": retmax, "tool": "ecc-pubmed-search", "email": os.environ.get("NCBI_EMAIL", ""), } api_key = os.environ.get("NCBI_API_KEY") if api_key: params["api_key"] = api_key
response = requests.get(f"{BASE}/esearch.fcgi", params=params, timeout=30)
response.raise_for_status()
time.sleep(0.35)
return response.json()["esearchresult"]["idlist"]
pmids = esearch("hypertension[mh] AND randomized controlled trial[pt] AND 2024:2026[dp]") print(pmids)
对于批量操作,优先使用 NCBI 历史服务器参数(usehistory=y、WebEnv、query_key),而不是通过 URL 传递很长的 PMID 列表。
输出规范
每次检索应记录:确切的检索字符串、检索的数据库、检索日期、使用的过滤器、结果数量、导出格式、任何手动排除项。示例表格:
| Database | Date searched | Query | Filters | Results |
|---|---|---|---|---|
| PubMed | 2026-05-11 | sickle cell disease[mh] AND CRISPR[tiab] |
2020:2026[dp], English | 42 |
审查清单
字段标签是否为有效的 PubMed 标签?MeSH 术语是否与自由文本同义词配对以覆盖较新主题?日期范围是否明确且适当?检索日志是否包含足够细节以复现查询?API 密钥是否从环境加载?HTTP 调用是否在解析前使用 raise_for_status() 或处理非 200 响应?是否遵守速率限制?
适用场景与限制
该技能适用于生物医学与生命科学领域的文献检索、系统综述检索、引文与元数据获取,以及通过 API 进行可重复的自动化检索。其限制在于:主要面向 PubMed/MEDLINE 数据库,不适用于通用网络搜索;使用 NCBI E-utilities 时需遵守其速率限制与 API 密钥管理要求;MeSH 术语的准确性依赖受控词表,新主题可能需要结合自由文本检索。