Почему Pubmed генерирует разные результаты из скрипта PHP, чем из ручного поиска? - PullRequest
2 голосов
/ 02 апреля 2011

Я написал PHP-скрипт, который автоматически ищет базу данных NCBI Pubmed на основе пользовательского ввода.Это довольно большой сценарий, и я не буду помещать все это сюда.Но одна проблема, которую я не могу понять, заключается в том, почему при поиске в Pubmed с использованием esearch (одного из eutils) я получаю другой результат, если он выполняется с использованием PHP-скрипта, чем когда он выполняется вручную?

Пустья приведу вам пример.Вы можете вручную ввести это в окно браузера: http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=cancer+AND+Nature[jour]&retmode=xml

Вы увидите, что он генерирует XML-файл, где поле Count (количество попаданий) равно 5986.

Но если яиспользуйте следующий сценарий PHP:

<?php
$test = simplexml_load_file('http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=cancer+AND+Nature[jour]&retmode=xml');
echo $test->Count;
?>

Возвращает значение 0. Это, кажется, происходит всякий раз, когда поисковый термин изменяется, чтобы включить дополнительное поле, или нестандартное поле содержит более одного поискового термина.,В данном случае это число поисков, которое вызывает «Рак», но ограниченное публикациями в журнале «Природа», второе поле.Если я изменю поисковый термин, чтобы он искал рак и ДНК ('http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=cancer+AND+DNA&retmode=xml'), два разных поисковых запроса в одном и том же поле, он отлично работает в сценарии.

Если я ищу в одном нестандартномfield: ('http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=Nature[jour]&retmode=xml') это работает нормально - но если я затем изменю его, чтобы включить два поля в поле журнала (' http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=Science[jour]+OR+Nature[jour]&retmode=xml') расхождение между созданным вручную и PHP сгенерированным возвратом.

Кто-нибудь имеет какие-либо идеипочему это может происходить?

Спасибо за любую помощь, которую вы можете предложить.

1 Ответ

3 голосов
/ 02 апреля 2011

Это работает:

<?php

$result = file_get_contents('http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=cancer+AND+Nature[jour]&retmode=xml');
$xml = simplexml_load_string($result);
echo $xml->Count; // = 5986

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...