Wikipediaのページタイトルを検索し、取得したページのWikiマークアップを解釈してXMLに変換して出力するプログラムです。
APIとして使うときは
http://ホスト名/wpsearch/index.php/?keywords=検索ワード&type=xml
とすると、前方一致検索が行われ、結果が複数ある場合は一覧が、結果が1つの場合はページの内容が、XMLで得られます。
完全一致検索をしたい場合は、パラメータにsearch=equalを加えます。
http://ホスト名/wpsearch/index.php/?keywords=検索ワード&type=xml&search=equal
複数の結果が返った場合は、一覧からリンクを取得して
http://ホスト名/wpsearch/index.php/?id=ページID&title=ページタイトル&type=xml
とアクセスすると、指定したページの内容がXMLで取得できます。
Wikipediaには、同じ名前のものがたくさん登録されています。
たとえば、映画「炎のランナー」を検索すると、「炎のランナー」「炎のランナー(ヴァンゲリス)」の2つが表示されます。
そこで、映画のテンプレートとして、よく使われている「Infobox Film」をInfoboxのタイトルに指定すると、映画の炎のランナーだけを取得できます。
また、映画「許されざる者」には1960年版と1992年版があります。もし、クリント・イーストウッドがアカデミー賞をとった1992年版だけを取得したいなら、Infobox Filmテンプレート内の「公開」の要素を利用します。
Ifoboxの要素名に「公開」、キーワードに「1992」とすれば、1992年版のデータだけを取得できます。
残念ながら、映画のすべてにInfobox Filmが付いているわけではありません。そこで、lead文(冒頭の記述)の中に含まれるキーワードでもフィルタリングできます。映画「クローズZERO」はInfobox Filmはありませんが、lead文のキーワードに「映画」と指定すれば、データを取得できます。
Infoboxとlead文の両方を必須とする場合は条件に「and」を、どちらか片方だけでよいなら「or」を指定してください。
フィルタ機能うち、タイトルと要素名は完全一致ですが、キーワードは部分一致となっています。
なお、「Infobox」、「lead文」などの用語は、Wikipediaの正式な用語ではなく、このWikipedia APIの説明において、便宜上付けたものです。
注:日本語はUTF-8をURLエンコードしてください
| パラメータ名 | 意味 | 例 |
|---|---|---|
| keywords | ページタイトル内を検索するキーワード | keywords=ウイークエンド |
| search | ページタイトル検索の前方一致 or 完全一致の指定 | search=equal(前方一致:デフォルト)/search=equal(完全一致) |
| it_filter | Infoboxのタイトル | it_filter=Infobox Film(完全一致) |
| id_filter_name | Infoboxの要素名(完全一致) | id_filter_name=公開 |
| id_filter_value | Infoboxの要素内を検索するキーワード(部分一致) | id_filter_name=1992 |
| lead_filter | lead文を検索するキーワード(部分一致) | lead_filter=映画 |
| condition | Infoboxとlead文の条件 | condition=or(どちらか片方:デフォルト)/condition=and(両方必須) |
| type | 検索結果の出力方式 | type=html(HTML:デフォルト)/type=xml(XML) |