AmazonのAPIでゲームの関連度順の検索ができない
2011/3/21追記 解決方法がわかりました。Net::Amazonでキーワード関連順の検索をする方法 - hsksnote
困った。
AmazonのProduct Advertising APIを試してるんだけど、これで関連度順の検索ができない。今まで試してみてダメだったやり方をまとめておく。
やりたいのはこんなの。
上のほうのジャンルで「TVゲーム」を選んでいて、右側の並べ替えで「キーワードに関連する商品」を選んでいる。
これをcatalystでNet::Amazonを使って実装する。
まずは素直に。
sub amazon : Local { my ($self, $c) = @_; my $ua = $c->model('Net::Amazon'); my $response = $ua->search( keyword => 'ゼノブレイド' , sort => 'relevancerank', mode => 'VideoGames', ); if ( !$response->is_success ) { $c->response->body( $response->message ); } $c->stash->{entries} = [$response->properties]; }
これで動かすと、こんなエラーメッセージが出る。
Sortに指定した値は無効です。'salesrank','price','-price','titlerank','-titlerank','release-date','-release-date','releasedate','-releasedate'などが有効な値の例です。
'pmrank'、'+pmrank'でも同様。
確かに、開発者向けガイドには、関連度順のソートが無いものねー。
SearchIndex: VideoGames
Value Description salesrank Bestselling price Price: low to high -price Price: high to low titlerank Alphabetical: A to Z -titlerank Alphabetical: Z to A -release-date Release date: newer to older release-date Release date: older to newer releasedate Items are sorted such that the most recently released item is listed first. Same as release-date. -releasedate Items are sorted such that the last released item is listed first. Same as -release-date.
では、他にやり方は無いか?ソート条件を指定しなかった場合、BrowseNodeを指定していなければ関連度順(relevancerank)、指定していたら売れてる順(Bestselling)で並ぶと書いてある。
参考:http://docs.amazonwebservices.com/AWSECommerceService/2010-11-01/DG/index.html?DefaultSortValues.html
これを使おう。コードからsort条件を削除してみると、結果はこう。
売れている順ソートになってる。うーん。
ちなみに、modeをBooksにして、ソート条件を指定しないと、関連度順の結果が得られる。
ゲームメーターでは、関連度順の結果が得られているから、なにかしらやり方があると思うんだけどなー。