前回まででAtomPubの機能をすべて実装しました。今回はAtomPubの拡張仕様であるGoogle Data APIs
2008年2月27日に発表された OpenSocial RESTful APIs には,
全文検索にはHyper Estraierというオープンソースの検索エンジンを用います。Hyper Estraierはフレーズ検索や属性検索をサポートしているため,
サンプルコードはこちらからダウンロードできます。
GDataとは
GDataはGoogle CalendarやBloggerなどのサービスを利用するためのAPIです。AtomPubの拡張仕様として定義されています。GDataは,
なお,
検索クエリ
GDataでは以下のパラメータが定義されています。
GData 検索パラメータ
パラメータ | 説明 |
q | 全文検索文字列, |
author | エントリの著者 |
alt | 代替表現 |
callback | コールバック関数名 |
updated-min,updated-max | エントリ更新日時の範囲 |
published-min,published-max | エントリ発行日時の範囲 |
start-index | 取得した結果のうち, |
max-results | 取得する結果の最大数 |
全文検索
著者検索
代替表現
updated-minなどのパラメータを使って,
クエリの例を示します。日本時間で2008年1月1日以降のatompubを含むエントリを検索する場合は,
http://localhost:3000/entrycollection?updated-min=2008-01-01T00:00:00+09:00&q=atompub
カテゴリを検索するときは,
GData検索パラメータ
パラメータ | 説明 |
/-/ |
カテゴリフィルタ |
メンバリソースのURIと区別するために,
たとえば,
http://localhost:3000/entrycollection/-/perl|ruby
JSONレスポンス
代替表現パラメータ
属性は文字列プロパティに変換
XML
<link href="http://example.com/collection" rel="self"/>
JSON
{ "link": { "href": "http://example.com/collection",
"rel" : "self" } }
子要素はオブジェクトプロパティに変換 (テキスト要素のキーは"$t")
XML
<author>
<name>Foo Bar</name>
<email>foo@example.com</email>
</author>
JSON
{ "author": { "name" : { "$t": "Foo Bar" },
"email": { "$t": "foo@example.com" } } }
複数存在する要素は配列プロパティに変換
XML
<link href="http://example.com/"/>
<link href="http://example.com/collection" rel="self"/>
JSON
{ "link": [ { "href": "http://example.com/" },
{ "href": "http://example.com/collection", "rel": "self" } ] }
GDataやAtomPubの検索クエリに関する動向
google-feedserverというGDataサーバのオープンソースプロジェクトがあります。JavaのAtomPub実装であるAbderaをベースにしています。執筆時点では開発が始まったばかりであり,
AtomPubのメーリングリストでは,