ESearchの使い方
ESearchはその名の通り、ある用語(term)から、データベース内のエントリを検索するためのツールである。検索結果は検索したデータベースのIDのリストとして返却され、それはEFetchやELink、ESummaryなどのツールで使用することができる。
EInfoと同じように、ESerachにもその機能を使用するためのBase URLがある。
Base URL: http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?
このBase URLにパラメータを追加していくことで欲しいデータ(IDのリスト)を手に入れることができます。
ESerachに設定することができるパラメータは以下の17個です。
- db: 検索対象のデータベースを指定する。
- usehistory: 検索結果をサーバに履歴として保存するかを指定する。
- WebEnv: 検索履歴で使用するための変数。
- query_key: 検索履歴中のデータ一つを示す変数。
- tool: このeUtilsを使用しているツールの名前を指定する。
- email: 使用者のメールアドレスを指定する。
- term: 検索に使用する用語を指定する。
- field: 検索対象とするデータベースのフィールドを指定する。(Pubmedのみ?)
- reldate: 検索対象とする日付の期間。検索対象とする日付の下限。
- mindate: 検索対象とする日付の下限。検索対象とする日付の下限。
- maxdate: 検索対象とする日付の上限。検索対象とする日付の下限。
- datetype: どの日付を検索対象とするかを指定。
- retstart: 検索された最初の記録の連番。
- retmax: 検索された結果のうち、表示する数。
- retmode: 検索結果のモード。
- rettype: 何を検索結果として返すか。(database specific)
- sort: WebEnvと共に使用し、検索結果をソートするために指定。
と、色々あるようですが、重要なのはdb
とterm
。あとは日付と検索個数くらいだと思います。(WebEnv関連は後で説明。)
まず、ESearchを使用する際にはデータベースを指定します。デフォルトはpubmed
だそうですが、使用できるデータベースはEInfoのエントリでも書いたように、EInfoを実行することで知ることができます。
次にそのデータベースで検索する用語(term)を指定します。これはよく目にするPubmed Searchの検索フォームのテキストボックスと同じ内容を指定します。このterm
の指定の仕方はデータベースごとに特有なので、それぞれのデータベースの指定の仕方を知っておく必要があります。
まあけど、私はいつも論文の著者名やタイトルなどの簡単な単語しか打ち込んでいませんでしたが^^;
あとは日付の指定です。これで検索対象とする日付の期間を指定することができます。
指定の仕方は二種類あり、今日の日付からさかのぼって、何日間のデータを検索するのかという指定と、日付の期間を指定する方法があります。
例えば、cancer
という単語について、Pubmedで今日から90日前までにどのような論文が発表されたのかを検索するには、
http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=cancer&reldate=90
と、指定します。
また、2005/02/16から2005/05/17までのデータを検索するには、
と、指定すればよいでしょう。
さて、上のリンクを実行してみた方は解ると思いますが、cancer
に関する2005/02/16から2005/05/17までの論文は14600本あります。しかし結果として表示されているのは20本の論文についてのPubmedIDにすぎません。
これは表示する検索結果の個数を制限しているからです。これらを指定するパラメータとしてretstart
とretmax
があります。
例えば上の検索結果に対して、100番目の論文から40本の論文のIDを手に入れるには、
と指定します。
さらに詳しい内容についてはReference Documentationを参照してください。
ただ、このReference Documentationでちょっと良くわからないのが、Relative Dates: やDate Ranges: 、Date Type: の指定というのはPubmed限定なのでしょうか?
例えばPubmed以外のデータベースについて、Reference Documentationにある Examples: のURLにreldate=90
を指定すると、Warningが出る場合と出ない場合があります。
具体的には、proteinデータベースに対して、reldate=90を指定して検索すると、以下のようなエラーと警告が出ます。
<ErrorList> <FieldNotFound>EDAT</FieldNotFound> </ErrorList> <WarningList> <OutputMessage>Range operator not supported in field [All Fields] Search terms that include a colon must be entered in double quotes.</OutputMessage> <OutputMessage>No items found.</OutputMessage> </WarningList>
原因はreldateはデフォルトでEDATというフィールドに対して制限をかけているから?ではproteinデータベースに対して同じような日付に対する制限をかける場合にはどのフィールドに対してreldateを指定してあげればいいのだろう??