0

Pubmed データベースの検索結果から Mesh 用語を抽出したいと考えています。私は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=textrettype=medline、1 つのファイルのダウンロードが 15 kb から 4kb に減少しました。また、リクエストの量を減らすために、すべてのダウンロードをバンドルしました。

500 件の結果を読み込むのに 4.8 秒かかります。

それでも早くしたい。

誰にもいくつかのヒントがありますか?

4

1 に答える 1

0

あなたの限界と目標が何であるかわかりません。しかし、データベース全体を照会している場合は、逆の方法を試してみます。データベースにクエリを実行して、既知のすべての MeSH 用語の記事を一覧表示します。私の知る限り、「2014 MeSH には 27,149 個の記述子」しかないため、データベース全体の結果を取得するには、3 万未満のクエリを送信する必要があります。Europe PMC RESTful Web Serviceを使用して実現でき ます。

于 2015-04-26T20:54:03.717 に答える