Tuesday, December 2, 2008

[CPAN] WWW::Search::PubMed, Affiliation 출력 기능 추가

WWW::Search::PubMed 는 기본적으로 Abstract, pmid, date, day, month, year
의 6개 분류에 대해 search result를 출력할 수 있게 구현되었다.

상황에 따라 author 나 저자의 affiliation 에 대한 정보가 필요한 경우가 있는데,
이를 위해선 WWW::Search::PubMed 모듈과 WWW::Search::PubMedResult 모듈에
몇 줄을 더 넣어 주면 간단하게 기능을 추가할 수 있다.

Affiliation 결과 출력 기능 추가는 아래와 같다

WWW::Search::PubMed 모듈

..
my $abstract = $self ... // 이 라인 근처에 아래 라인을 넣으면 된다
my $affiliation = $self->get_text_node($article,'Affiliation');

..
$hit->.. // $hit 으로 시작되는 라인들이 모여 있는 곳에 아래 라인을 추가한다.
$hit->affiliation($affiliation);
..



WWW::Search::PubMed::Result 모듈

..
sub affiliation { return shift->_elem('affiliation',@_); } // Affiliation 정보를 얻는 함수
..



** Search result 개수 제한 문제
WWW::Search 모듈에서는 maximum_to_retrieve 옵션으로 result개수를 지정할 수 있다. default는 500개.
WWW::Search를 베이스로 하고 있는 Pubmed 모듈도 이를 사용할 수 있는데, 여기서 500개 이상을 지정할 수 없게 되어 있다. 이는 pubmed 모듈 안의 search 옵션이 default로 500으로 지정되어 있고, 이는 maximum_to_retrieve로 선택할 수 있는 변수가 아니기 때문에 발생하는 문제다. 이 문제 해결을 위해서는 이 값을 적당히 큰 값으로 바꾸면 된다.


my constant QUERY_ARTICLE_LIST_URI => 'http://eutils.ncbi.nlm.nih. .. .fcgi?db=pubmed&retmax=500'; // 500을 적당히 큰 수로 바꾼다