Я хочу извлечь термины Mesh из результатов поиска в базе данных Pubmed. Я использую php.
Я сделал сценарий, который работает, но очень медленно. Он открывает каждую статью, анализирует XML и извлекает термины сетки. Функция «fopen» - это медленная часть.
$url= $base."efetch.fcgi?db=$db&id=$id&rettype=abstract";
$opts = array(
'http' => array(
'method' => "GET",
'header' => "User-Agent:MyAgent/1.0\r\n"
)
);
$context = stream_context_create($opts);
$fp = fopen($url,'r',false,$context);
$output=stream_get_contents($fp);
Скрипт открывает для каждой статьи большой XML-файл: http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=19616537&retmode=xml
Есть ли способ получить только термины Mesh или хотя бы меньшую часть xml? Или загрузить только половину файла?
Спасибо
обновление: у меня есть некоторые улучшения. Использование efetch с retmode=text
и rettype=medline
уменьшило загрузку одного файла с 15 КБ до 4 КБ. Я также связал все загрузки, чтобы уменьшить количество запросов.
Теперь загрузка 500 результатов занимает 4,8 секунды.
Я все еще хочу быстрее.
Есть ли у кого-нибудь советы?