2.1 Search for authors by name GET /graph/v1/author/search
按姓名检索作者。
| 参数 | 必填 | 说明 |
|---|---|---|
query | 是 | 纯文本姓名 |
offset / limit | 否 | limit 默认 100、上限 1000 |
fields | 否 | 逗号分隔的字段投影,见 §3 |
curl "https://fetchpaper.com/graph/v1/author/search?query=Vaswani&limit=2&fields=name,paperCount,citationCount,hIndex"
{"total": 58, "offset": 0, "next": 2,
"data": [{"authorId": "40348417", "name": "Ashish Vaswani",
"paperCount": 50, "citationCount": 218026, "hIndex": 25},
{"authorId": "1751096", "name": "Namrata Vaswani",
"paperCount": 159, "citationCount": 4867, "hIndex": 35}]}
/author/search把连字符当普通分隔符:Smith-Jones拆成smith+jones求交集,实测total: 4(首位Katherine Jones-Smith);Bo-Kai Cao实测total: 3,全名完全相等那位排第一。缩写式J.-P.同理,实测 6,961 条。本地 14,005,627 位作者里 1,830,802 位(13.1%)姓名带词-词连字符,都能按全名查到。命中数与官方不同只是语料范围差异(官方全库、本地 CS 子集),不是匹配规则差异。- 两种非 200 分得很开(口径见 §0):数据没建 → 500,查询太宽 → 400。 作者数据没建时五个
/author/*端点全部 500,文案作者表缺失或不完整,运行 python build_authors.py 重建;只有姓名检索索引单独缺失时影响面小一档:只有/author/search500,文案换成作者姓名索引缺失或规范化版本不一致,运行 python build_authors.py 重建,/author/{id}、/author/{id}/papers、/author/batch照常 200。作者数据缺失也不牵连论文侧:/paper/{id}/authors的名字来自论文正文,照常 200,只是画像字段给空值。 /author/search查询规模也有界,超限一律 400 + JSON,不 500、不半帧:- 单个词的前缀展开 60,000 个姓名项 / 5,000,000 行,谁先撞到报谁(模板,尖括号换实际值):
Name prefix matches too many entries (<n> terms / <m> postings scanned, max 60,000 terms or 5,000,000 postings); use a longer query。真库最宽的两字母前缀是ma(51,994 个词),所以真实姓名查不出这一条,它是给畸形入参兜底的。 - 一条查询(去重后)各词命中行数之和 8,000,000 行:
Name query scans too many author entries (8,004,812 postings, max 8,000,000); use fewer or rarer name tokens。上一条管「一个前缀有多大」,这条管「几个宽前缀叠起来有多大」——姓名词之间是交集(AND),十个各自合法的宽前缀仍是十份扫描。真库实测li ch zh ma sh ji ha xi wa ya sa yu mi hu ka pa= 7,722,421 行(200),再加一个we就是 8,004,812 行 → 400;最宽的真实姓名组合smith wang li是 1,112,693 行,远在界内。 - 同一个词写几遍只算一遍(交集对自己幂等,去重不改结果也不改顺序)。查不到的词不花钱——第一个空结果就短路,所以 4,096 个生词仍是 200 / 17 ms(预算不是按词个数算的)。
- 再往外是 transport 的界:请求行超过 stdlib 64 KB 上限回 414(实测 8,192 个词 ≈ 74 KB → 414,4,096 个 ≈ 37 KB → 200)。