2008-09-01 21:44:37
Google AJAX Search APIの動かし方を試していたときに、どうして結果が4件しかないんだ! と思ったら、初期条件は4件らしい。説明はちゃんと読まなければいけない。rszという引数について、「この引数 (省略可能) は、アプリケーションが受け取る結果の数を指定します。small の値は、結果セットのサイズが小さいこと、つまり 4 件の結果を示します。large の値は、結果セットが大きいこと、つまり 8 件の結果を示します。この引数が指定されない場合、値は small と仮定されます。」と書いてあるではないか。
ならば、40件の結果を得たいときは、rsz=largeにして4回繰り返せばいいのか。29日の記事の、情報を取得する部分をこんなふうにしてみた。
class MainPage(webapp.RequestHandler): def get(self): urlbase = 'http://ajax.googleapis.com/ajax/services/search/web?' for i in range(5): query = {'v':'1.0','q':'London','rsz':'large','start':i*8,'key':'xxxxxx'} url = urlbase + urllib.urlencode(query) result = urlfetch.fetch(url) if result.status_code == 200: a = simplejson.loads(result.content) results = a['responseData']['results'] if i == 0: self.response.out.write("<html><body><h1>Test</h1>") self.response.out.write("<table border='1'><tr><th>title</th><th>content</th></tr>") for r in results: self.response.out.write("<tr><td>%s</td>" % r['title'].encode('utf-8')) self.response.out.write("<td>%s</td></tr>" % r['content'].encode('utf-8')) self.response.out.write("</table></body></html>")
何となくそれらしい結果は返ってきたようだけど、この方法でいいのだろうか。これで50回まわして400件の結果を取得しても怒られたりしないのだろうか。怒られるかどうか試してみようか。
とりあえず、これでまたKWICだろうか。数百件の結果が得られるなら前後に出現する単語の頻度順に並べてみるとか、検討してみてもいい。
YahooKWICの言語の選択肢を増やしてみた。こんなに増やしてどうするのかというくらい。Yahoo! SearchAPIの方で選べるものでも、右から左に書く言語(アラビア語とヘブライ語)などは入れていない。フレーズ検索も選べるようにした。空白を含む語句で、つまり複数の単語の組み合わせによる表現で検索できるということである。英語でその効果を確認したが、思ったほどでもなかった。単語でもそれなりに結果がでてしまうので。日本語の場合、意味がある結果になっているのかどうか解らなかった。
Technoratiでもこのようなフレーズ検索ができればいいのだが。サイト上での詳細検索ではできるのだが、APIの方には記されていない。どうなのだろう。