たつをの ChangeLog : 2006-09-21

今回の YahooHacks は、関連検索ワード API を使った、
奇をてらわない普通のハックです。
(一時的にデモを置いておきます。そのうち消えます。ご了承ください。
http://chalow.net/misc/yahoohacks-samp/hack_webunit.cgi)

使用している Web API の提供が終了となったため、現在動作しません。ご了承ください。



■■■関連検索ワードAPIで検索キーを拡張する

「Yahoo!検索 - キーワード入力補助」(http://assist.search.yahoo.co.jp/)
では、入力した検索キーと関連する検索キーワードが表示され、
検索の手助けをしてくれます。

画像

YDN には、このような関連キーワードを取り出す API もあります。
それが「関連検索ワードWebサービス」です。

- Yahoo!デベロッパーネットワーク - 関連検索ワード
  http://developer.yahoo.co.jp/search/webunit/V1/webunitSearch.html

ということで、関連検索ワードWebサービスを使って、
検索キーを拡張しながら検索できるサンプル CGI を作ってみました。

■コード

受け取った検索キーでまず関連検索ワードを API 経由で取得します。
その後、ウェブ検索 API 経由で普通に検索します。

#!/usr/bin/perl -T
use strict;
use warnings;
use Encode;
use CGI;
use LWP::Simple;
use XML::Simple;
use HTML::Template;
use URI::Escape;
binmode STDOUT, ":utf8";

my $q = new CGI;
my $key = $q->param('key') || "";

my $wu_ref = yapi_search({type => "unit", key => $key});
my @wu = map {{'String' => $_}} @$wu_ref; # for HTML::Template
my $ws_ref = yapi_search({type => "web", key => $key});

my $template = join("", <DATA>);
my $t = HTML::Template->new(scalarref => \$template,
                            die_on_bad_params => 0);
$t->param(key => decode('utf-8', $key));
$t->param(results => $ws_ref);
$t->param(webunits => \@wu);

print $q->header(-charset => 'UTF-8'), $t->output();

sub yapi_search {
    my ($args_ref) = @_;
    my $key = $args_ref->{key};
    my $num = $args_ref->{num} || 10;
    my $type = $args_ref->{type} || "web";

    return [] unless $key;
    my $ec = URI::Escape::uri_escape($key);
    my %TYPE_TABLE = 
        ("web" => "WebSearchService/V1/webSearch", 
         "image" => "ImageSearchService/V1/imageSearch", 
         "video" => "VideoSearchService/V1/videoSearch", 
         "unit" => "AssistSearchService/V1/webunitSearch");
    my $url = "http://search.yahooapis.jp/$TYPE_TABLE{$type}"
        ."?appid=YahooDemo&query=$ec&results=$num";
    my $yahoo_response = get($url);
    my $xmlsimple = XML::Simple->new(ForceArray => [ 'Result' ]);
    my $yahoo_xml = $xmlsimple->XMLin($yahoo_response);
    return $yahoo_xml->{Result};
}

__DATA__
<html lang="ja">
<head>
<title>Assist Search</title>
</head>
<body>
<h1>Assist Search</h1>
<form method="get">
<input type="text" name="key" value="<TMPL_VAR name=key>">
<input type="submit" value="search">
</form>
<TMPL_IF name=webunits>
<form method="get">
<select name="key">
<TMPL_LOOP name=webunits>
<option value="<TMPL_VAR name=String>"><TMPL_VAR name=String>
</TMPL_LOOP>
</select>
<input type="submit" value="search">
</form>
</TMPL_IF>
<h2>Search Results</h2>
<TMPL_LOOP name=results>
<h3><a href="<TMPL_VAR name=Url>"><TMPL_VAR name=Title></a></h3>
<p><TMPL_VAR name=Summary></p>
</TMPL_LOOP>
</body>
</html>

■Hack の実行

そのままWebサーバに置けば動作するはずです。
まず「ブログ」「ウェブ」などの一般的な検索キーを入力します。
すると検索結果と同時にフォームにプルダウン式で関連検索ワードが
表示されます。そこから選んでさらに検索できます。

検索実行例を下図に示します。

画像



参考ページ:
- Yahoo!デベロッパーネットワーク (YDN)
  http://developer.yahoo.co.jp/
- Yahoo!検索 - キーワード入力補助
  http://assist.search.yahoo.co.jp/

関連書籍:
- Yahoo! Hacks

非検索会議あります!9月28日。
茂木健一郎さんと増井俊之さんの対談が豪華です!
もう申し込み締め切りかな。追加募集あるかな?

第四回検索会議開催します! - Yahoo!検索 スタッフブログ
http://blogs.yahoo.co.jp/yjsearchblog/40148825.html
今年も検索会議を実施することになりました。
第四回目になる今回は、検索だけでなく広くウェブの未来を探る、
というテーマで「非」検索会議と題し、
Web 2.0時代のインタラクション・デザインを考える会議を企画しました。

Passion For The Future: "非"検索会議 sponsored by Yahoo! 検索
 〜 Web 2.0時代のインタラクション・デザインを探る 〜
http://www.ringolab.com/note/daiya/archives/004737.html

i d e a * i d e a - 「非」検索会議へのお誘い
http://www.ideaxidea.com/archives/2006/09/post_141.html
非検索会議
この記事に言及しているこのブログ内の記事

PERとは株価を一株当たり利益で割ったもの、
と言われてもいまいちピンとこないけど、
「何年分」という視点で説明されると分かった気になる。

投資したお金分(株の購入価格)をお礼としてもらえるのに
最低何年かかるか
(http://kabu-gakkou.com/benkyou/per.html)
その会社の利益の何年分の価値で取引されているか
(http://www.toro9.com/kinyu/2006/06/post_40.html)
株を買った金額と同じぐらいの利益を得るのに
何年かかるのか?っていう数値がPERと呼ばれたりします。
(http://www.asks.jp/users/hiro/9863.html)

100円ショップで買ったものを淡々と紹介しています。
(最近買ったものを一覧するには→100yen

さてさて、今日、六本木のマクドナルドの近くにある100円ショップ、
「六本木TKショップ」(?)で買ったものを紹介。

★くねくねブラシ。しなるブラシ。お風呂掃除用に、と。
くねくねブラシ

★トラベルメッシュ。小さいのと中くらいのの2枚組み。消耗品だよなあ…。
トラベルメッシュ

★割り箸。50膳入り。会社に常備する用。
割り箸

広尾にあるドイツパンの店「東京フロインドリーブ」に、たまに朝に寄り
ます。50〜70円の小さいパンを4個か5個買う、ってのがよくあるパターン。

画像

- 東京フロインドリーブ
  http://homepage2.nifty.com/t-freundlieb/
この記事に言及しているこのブログ内の記事

たつをの ChangeLog
Powered by chalow