楽天APIと、YahooショッピングやAmazonのAPIの検索結果を混ぜて表示させる


■やりたいこと
楽天の商品検索API、Yahooショッピング、Amazonの商品検索APIで検索された結果を混ぜて表示したい。
http://webservice.rakuten.co.jp/api/itemsearch/
http://developer.yahoo.co.jp/webapi/shopping/shopping/v1/itemsearch...
https://affiliate.amazon.co.jp/gp/advertising/api/detail/main.html

■実現例
www.example.com/vaio
にアクセスすると、楽天、Yahoo、Amazonの商品検索APIで「vaio」と検索された結果が表示される。


現時点で、楽天の検索結果を表示するページは完成しています。
しかし、他にも複数のサービスの検索結果を混ぜて表示したいのですが、実現方法がさっぱり思い浮かびません。
一度、MySQLなどのデータベースに入れて取り出す、というような方法でしょうか。

混ぜて表示するからには、並べるために何かしらの基準が必要になるのではないか。。。とは思うのですが。

また、表示した一覧を(価格順やクチコミ数順などで)ソートしたいのですが、これもやはり各サービスのAPIのものではなく、独自の機能が必要になるでしょうか。


考え方、実現方法など、何かヒントをお教えいただけますとありがたいです。

回答の条件
  • 1人50回まで
  • 登録:
  • 終了:2013/08/02 00:52:31
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:kaji0120 No.1

回答回数59ベストアンサー獲得回数13

ポイント150pt

商品を検索して、その検索結果を配列に放り込むPHPを作成します。

//キーワードをもとに楽天の商品検索を行い、その結果を配列に格納する関数
function rakuten_search($keyword){
:
$rakuten_result=array(……);
return $rakuten_result;
}
//例えば、vaioを楽天で検索した結果の1番目のタイトルがほしいときは次のような感じで表示できるようにする。
$res['rakuten']=rakuten_search("vaio");
//print($res['rakuten'][1]['title']);

同様に他のAPIでも検索関数を作成します。

//http://mayer.jp.net/?p=1098
function amazon_search($keyword){
:
$amazon_result=array(……)
return $amazon_result;
}

//amazonでvaioを検索した結果の4番目を表示する

$res['amazon']=amazon_search("vaio");
//print($res['amazon'][4]['price']);

//yahooの検索APOIを利用して作成した検索関数

function yahoo_search($keyword){
:
$yahoo_result=array(……)
return $yahoo_result;
}

//yahooでvaioを検索した結果の8番目のすべての情報を表示する

$res['yahoo']=yahoo_search("vaio");
//print_r($res['yahoo'][8]);

いま変数$resには1次元目に検索サイト、2時限目に検索結果の番号、3時限目に要素が入っています。
これをarray_multisortを使用して好きなようにソートします。
http://www.akiyan.com/blog/archives/2007/10/phparray_multis.html

その他の回答1件)

id:kaji0120 No.1

回答回数59ベストアンサー獲得回数13ここでベストアンサー

ポイント150pt

商品を検索して、その検索結果を配列に放り込むPHPを作成します。

//キーワードをもとに楽天の商品検索を行い、その結果を配列に格納する関数
function rakuten_search($keyword){
:
$rakuten_result=array(……);
return $rakuten_result;
}
//例えば、vaioを楽天で検索した結果の1番目のタイトルがほしいときは次のような感じで表示できるようにする。
$res['rakuten']=rakuten_search("vaio");
//print($res['rakuten'][1]['title']);

同様に他のAPIでも検索関数を作成します。

//http://mayer.jp.net/?p=1098
function amazon_search($keyword){
:
$amazon_result=array(……)
return $amazon_result;
}

//amazonでvaioを検索した結果の4番目を表示する

$res['amazon']=amazon_search("vaio");
//print($res['amazon'][4]['price']);

//yahooの検索APOIを利用して作成した検索関数

function yahoo_search($keyword){
:
$yahoo_result=array(……)
return $yahoo_result;
}

//yahooでvaioを検索した結果の8番目のすべての情報を表示する

$res['yahoo']=yahoo_search("vaio");
//print_r($res['yahoo'][8]);

いま変数$resには1次元目に検索サイト、2時限目に検索結果の番号、3時限目に要素が入っています。
これをarray_multisortを使用して好きなようにソートします。
http://www.akiyan.com/blog/archives/2007/10/phparray_multis.html

id:dawakaki No.2

回答回数797ベストアンサー獲得回数122

ポイント150pt

>現時点で、楽天の検索結果を表示するページは完成しています。
どんな言語で完成させたのですか?

MySQLなどDBを使う必要はありません。
楽天の検索結果は配列変数に入れてありますか?
それなら、Yahoo商品検索も同じように配列に入れ、楽天とYahooの配列をマージします。マージした後に、一定の基準でソートします。

たとえばPHPなら、下記サイトが参考になります。

Yahoo!ショッピング 商品検索 サンプルコード
http://web.shirakabako.net/yahooshopping/itemsearch/code.html

このスクリプトはforで繰り返し表示していますが、この部分を配列への代入に変更します。

配列変数の結合には array_merge を使います。
http://www.kokin.rr-livelife.net/php/php_post/php_post_19.html

配列変数のソートには複数の関数があります。
http://php.net/manual/ja/array.sorting.php

id:cafe-beret

お二方とも、誠にありがとうございました。

おかげで、理解を一つ進めることができました。

どちらも大変勉強になりましたが、最初にお答えいただいた方をベストアンサーとさせて頂きました。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません