てきとうなメモ

本の感想とか技術メモとか

Yahoo!の関連検索ワードAPI

http://blogs.yahoo.co.jp/yjsearchblog/35589767.html

http://developer.yahoo.co.jp/search/webunit/V1/webunitSearch.html

あるクエリに対して組み合わせて検索されることの多いキーワードを表示する機能.フォームからだと10件まで表示できないけどAPI経由だと100件まで表示できる.

ちょっとPerlで書いてみた.単に検索するだけだけど.

use strict;
use WWW::REST;
use XML::Simple;
my $uri_str = "http://api.search.yahoo.co.jp/AssistSearchService/V1/webunitSearch";
my $appid = "[app id]";
my $max = 100;

my $query = $ARGV[0];
my $uri = WWW::REST->new($uri_str);
$uri->dispatch(sub {
		 my $self = shift;
		 die $self->status_line if $self->is_error;
		 my $res = XML::Simple->new(ForceArray => 1);
		 $res->XMLin($self->content);
});

my $words = rel_words($query);
for my $i (0..@$words-1) {
  print_results($i, $words->[$i]);
}

sub rel_words {
  my ($query) = @_;
  my $xml = $uri->get(
      appid => $appid,
      query => $query,
      results => $max,
      start => 0
     );
  my $res = $xml->{Result};
  if (! defined $res) {
    $res = [];
  }
  $res;
}

sub print_results {
  my ($i, $r) = @_;
  printf "%02d.\t%s\n", $i+1, $r;
}

映画について検索すると,

$ perl search.pl "映画"
01.	映画 海猿
02.	デスノート 映画
03.	ダヴィンチコード 映画
04.	ダビンチコード 映画
05.	映画 ゴール
06.	デイジー 映画
07.	テニスの王子様 映画
08.	ポセイドン 映画
09.	さくらん 映画
10.	レント 映画
11.	ガンダム seed 映画
12.	嫌われ松子の一生 映画
13.	goal 映画
14.	僕は妹に恋をする 映画
15.	映画 dvd
16.	明日の記憶 映画
17.	トリック 映画
18.	nana 映画
19.	初恋 映画
20.	ガンダムseed 映画
21.	韓国 映画
22.	名探偵コナン 映画
23.	映画 試写会
24.	イオン 映画
25.	映画 ランキング
26.	バベル 映画
27.	間宮兄弟 映画
28.	チェケラッチョ 映画
29.	ダ・ヴィンチ・コード 映画
30.	コナン 映画
....

ここらへんの映画が流行っているのかなあ.