参考文献模型校对换阿里云百炼,完善各种校对细节
This commit is contained in:
@@ -60,8 +60,8 @@ class PubmedService
|
||||
$pmid = trim($pmid);
|
||||
if ($pmid === '') return null;
|
||||
|
||||
// v2:解析结果新增 journal_iso_abbr / journal_medline_ta,换 key 避免命中旧缓存
|
||||
$cacheKey = 'pmid_v2_' . $pmid;
|
||||
// v3:解析结果新增 language / journal_country / affiliations,换 key 避免命中旧缓存
|
||||
$cacheKey = 'pmid_v3_' . $pmid;
|
||||
$cached = $this->cacheGet($cacheKey, 30 * 86400);
|
||||
if (is_array($cached)) return $cached;
|
||||
|
||||
@@ -254,6 +254,31 @@ class PubmedService
|
||||
}
|
||||
}
|
||||
|
||||
// 文献语种:PubMed 用三字母代码(eng/chi/ger…),一篇可有多个
|
||||
$languages = [];
|
||||
$langNodes = $xp->query('//PubmedArticle//Article//Language');
|
||||
if ($langNodes) {
|
||||
foreach ($langNodes as $n) {
|
||||
$t = strtolower(trim($n->textContent));
|
||||
if ($t !== '') $languages[] = $t;
|
||||
}
|
||||
}
|
||||
$languages = array_values(array_unique($languages));
|
||||
|
||||
// 期刊出版国(MedlineJournalInfo/Country),非研究开展国,仅作兜底
|
||||
$journalCountry = $this->xpText($xp, '//PubmedArticle//MedlineJournalInfo//Country');
|
||||
|
||||
// 作者单位原文,用于推断研究开展国
|
||||
$affiliations = [];
|
||||
$affNodes = $xp->query('//PubmedArticle//AuthorList//Author//AffiliationInfo//Affiliation');
|
||||
if ($affNodes) {
|
||||
foreach ($affNodes as $n) {
|
||||
$t = trim($n->textContent);
|
||||
if ($t !== '') $affiliations[] = $t;
|
||||
}
|
||||
}
|
||||
$affiliations = array_values(array_unique($affiliations));
|
||||
|
||||
if ($title === '' && $abstract === '') {
|
||||
return null;
|
||||
}
|
||||
@@ -267,6 +292,10 @@ class PubmedService
|
||||
'journal_iso_abbr' => $journalIsoAbbr,
|
||||
'journal_medline_ta' => $journalMedlineTa,
|
||||
'year' => $year,
|
||||
'language' => isset($languages[0]) ? $languages[0] : '',
|
||||
'languages' => $languages,
|
||||
'journal_country' => $journalCountry,
|
||||
'affiliations' => $affiliations,
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user