2009年02月27日 22:45 [Edit]

Ajax - Yahoo検索ヒット数+シンプソン係数

Bの方を空にすると、シンプソン係数の計算は省略します。

A
B
A&B
シンプソン係数 =

一つ面白いことがわかりました。「小飼」と「弾」の係数の高さもさることながら、「弾」と「小飼」を入れ替えてみてください。何がおこるでしょう。以下、ヒント。

A∩Bと、B∩Aは、検索においては一致するとは限らないんですよね....

Enjoy!

Dan the Ajaxen

Server Source

Client DHTML


Client JavaScript

$ = function(id){ return document.getElementById(id) };

askYahoo = function(a, b, ab){
    var uri = 'http://api.dan.co.jp/yjhits.cgi';
    a.parentNode.nextSibling.id = '.' + a.value;
    uri += '?s=' + encodeURIComponent(a.value);
    if (b.value.length){
        b.parentNode.nextSibling.id = '.' + b.value;
        uri += '&s=' + encodeURIComponent(b.value)
             + '&s=' + encodeURIComponent(a.value)
             +   '+' + encodeURIComponent(b.value);
        ab.nextSibling.id = '.' + a.value + ' ' + b.value;
    }else{
        b.parentNode.nextSibling.id = b.parentNode.nextSibling.innerHTML = '';
        ab.nextSibling.id = ab.nextSibling.innerHTML = '';
        $('SimpsonsC').innerHTML = '';
    }
    var script = document.createElement('script');
    script.charset = 'UTF-8';
    script.src = uri;
    document.lastChild.appendChild(script);
};
yjhits = function(json){
    var va = 0, vb = 0, vab = 0;
    for (var p in json){
        var e = $('.' + p);
        if (!e) continue;
        e.innerHTML = json[p];
        if (p.match(/([^ ]+) ([^ ]+)/)){
            va  = parseInt(json[RegExp.$1]);
            vb  = parseInt(json[RegExp.$2]);
            vab = parseInt(json[p]);
        }
    }
    if (!vab) return;
    $('SimpsonsC').innerHTML = (vab / (va < vb ? va : vb));
};

この記事へのトラックバックURL