ECサイト系WebAPIにちょっとだけ複雑なクエリーを渡す方法(というか雑感)
redgasukiです。
ちょっとだけ複雑なクエリというのは
A and B and(C or D ) and (not E)
みたいな感じで、and、orやnotを指定して検索する場合を想定しています。
対象となるECサイト形WebAPIは、
- 楽天市場
- Yahooショッピング
- Amazon
- バリューコマース
のWebAPIを使って行なう場合を想定しています。
ただいま「ワケありーな」という訳あり商品を一括検索するサイトを絶賛公開中です。
ご意見やご要望があれば、是非こちらから、お願いします。
Yahooショッピング

http://developer.yahoo.co.jp/webapi/shopping/shopping/v1/itemsearch.html
Yahooショッピング商品検索APIのオンラインドキュメントに見ると、
全てANDか、ORしか出来ないような感じですが
今回の目的のクエリを一番きちんと処理してくれます
A and B and(C or D ) and (not E)
と書きたい場合、
&query=A B (C D) –E
※UTF-8エンコードをする。他のAPIも同様
ただ、若干癖があり、例えば、「訳ありじゃない」というキーワードを含めないようにしたい場合、
訳あり -訳ありじゃない
と書いても、ダメ(検索結果から取り除かれない)だったりします。
色々試して、検索結果から見た経験則で、根拠となるようなソースはないのですが、
検索したいキーワードと取り除きたいキーワードが重ならなければ、大丈夫なようです
(どうもYahooショッピングAPIは、検索キーワードを日本語形態素解析してから、検索しているような気がします)
notを使うと件数が増えてしまう例
Yahooショッピング 「訳あり」で検索。40672件(2009/6/9現在)
http://shopping.yahoo.co.jp/search?first=1&p=%CC%F5%A4%A2%A4%EA&cid=&x=0&y=0
Yahooショッピング 「訳あり -訳ありじゃない」で検索。40813件(2009/6/9現在)
件数の合計が正しい例
Yahooショッピング カテゴリ魚介・魚介加工品を「訳あり」で検索。1045件(2009/6/9現在)
http://shopping.yahoo.co.jp/search?first=1&p=%CC%F5%A4%A2%A4%EA&cid=939&x=0&y=0
Yahooショッピング カテゴリ魚介・魚介加工品を「訳あり かに」で検索。342件(2009/6/9現在)
http://shopping.yahoo.co.jp/search?first=1&p=%CC%F5%A4%A2%A4%EA+%A4%AB%A4%CB&cid=939&x=0&y=0
Yahooショッピング カテゴリ魚介・魚介加工品を「訳あり -かに」で検索。703件(2009/6/9現在)
http://shopping.yahoo.co.jp/search?p=%CC%F5%A4%A2%A4%EA+-%A4%AB%A4%CB&cid=939
Amazon

http://developer.amazonwebservices.com/connect/thread.jspa?messageID=40517
上記スレッドのとおり、仕様上は、and or notが同時に使えます
A and B and(C or D ) and (not E)
と書きたい場合、前から処理をしますので、
&Keywords=C | D A B - E
とクエリを渡します
わざわざ仕様上と書いたのは、例えば
1. A or B or C
2. A or B or C or D
と書いた場合、2.の方が、検索結果が多くなるのが当然ですが、
amazon先生が返してくれる結果は、なぜか減ったりします、ね
いまいち信用していいのか、不安な部分もありますが 、
何しろ、他の追随を許さないくらいデータの豊富です。多少のことは目をつぶって・・・
楽天市場

楽天商品検索APIのオンラインドキュメントによると
指定した検索キーワードをAND またはORでの検索、およびそれとは別にNOTでの検索が出来ます
http://webservice.rakuten.co.jp/api/itemsearch/
指定出来るクエリ
A and B and (not E)
と書きたい場合、
&keyword=A B&NGKeyword=E
ORを使いたい場合はorFlagを有効に
(C or D ) and (not E)
と書きたい場合、
&keyword=C D&orFlag=1&NGKeyword=E
色々と試してみたのですが、 ANDとORを一度に指定することは出来ないようです。
バリューコマース

バリューコマースのWebAPIは、残念ながら、notやorを指定することは出来ないようです。
https://www.valuecommerce.ne.jp/support/ptn/feature/api/download.html
https://www.valuecommerce.ne.jp/support/ptn/feature/api/images/Webservice_API_reference.pdf
「訳あり」で検索してんのかw
ワケありーなのはてなブックマークにhttp://blog.fkoji.com/ の中の人からコメントを頂いたのですが、

http://b.hatena.ne.jp/entry/http://ne2ma2.com/wakeari/
そのとおりw
基本的には、API叩いて、表示するだけの簡単なお仕・・・
お礼に
つ 訳ありの梅酒
むしろ、大変だったのは、各ECサイトごとに思想の違うカテゴリを関連付ける作業で
チームのharryを中心にzakkiと2人が頑張っていました(←手伝っていない私・・・)
気が付いたら
ものすごい久しぶりのブログ更新
Popularity: 30 %
by redgasuki 













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