2010年5月19日水曜日

Bing API 2.0で独自のサーチアプリを作る

複数のキーワードを色々と組み合わせた検索結果が欲しい場合にいちいちその組み合わせごとに入力するのが面倒なのでBing API 2.0を使うアプリを作った。


初めはGoogle Search APIを使おうと思ったのだが、いつの間にだか仕様変更がされていて、Googleから提供されるライブラリを使いクライアントスクリプト上からのみしかアクセスできないようになっていた。それなので、クエリに対してほぼ制限のないBing APIを使うことにした。

Bing APIはかなり使いやすくBing Developer Centerで下図のフォームに必要事項を入力しAppIDを取得しさえすれば、後はBing APIの形式にのっとってHttp GETメソッドで取得すればよい。ちなみにAppIDの取得にはWindwows Live IDが必要なので、ない場合はWindows Live IDを取得してから作業をすすめよう。

(Company Nameなどは適当に入力したが特に問題はなかった)

Bing APIの実際を知るにはSDKをダウンロードしてコードを見るのが一番手っ取り早いが、いくつか解説しておこうと思う。
(Developer CenterでAPI Documentationなどが参照できるので詳細はそちらへ)

基本のクエリは下記のようになる(Bing APIではXMLかJsonで結果を受け取れる。Jsonで取得したい場合はxml.aspxではなくjson.aspxに対してリクエストすることになる)。

http://api.search.live.net/xml.aspx?Appid=&query=漫画&sources=web

一番後ろのパラメータにsourcesを指定しているがBing APIではSourceTypeを指定する必要がある。SourceTypeにはWeb, Image, News, InstantAnswer, Spell, Phonebook, RelatedSearch, Adとあるが下記のように複数組み合わせることも可能だ。

http://api.search.live.net/xml.aspx?Appid=&query=漫画&sources=web+image

いくつかの例を下記に示す。

複数のキーワードを組み合わせる場合
http://api.search.live.net/xml.aspx?Appid=&query=漫画 おすすめ&sources=web
http://api.search.live.net/xml.aspx?Appid=&query=漫画 おすすめ -Amazon&sources=web

検索結果を30件取得する場合
http://api.search.live.net/xml.aspx?Appid=&query=漫画&sources=web&web.count=30

30件の検索結果を、51件目から取得する場合
http://api.search.live.net/xml.aspx?Appid=&query=漫画&sources=web&web.count=30&web.offset=51

ちなみに、web.countは最大で50になる。そして検索結果は最初の1000件まで取得可能だが、web.offsetはweb.count + web.offset <= 1,000となる必要がある。 WebソースタイプのXMLフォーマットのレスポンスサンプルはここで参照できる。レスポンスとして取得したXMLやJsonの解析方法などはSDKで詳細にコーディングされているのでそちらを参照して欲しい。

最後に、Bing APIを使う上で次のようにいくつかの制約がある:検索結果をすべて表示すること、IPアドレスごとに秒間7つまでのリクエストしかできない、SEOのために使ってはならない、Bingを使っていると表示すること、などなど他にもいくつかあるのでAPI Basicsの一番最後の部分をしっかりと読んでから使って欲しい。

0 件のコメント:

コメントを投稿