BlogRanger API を使ってページの関連ブログを表示
BlogRanger APIを使ってページの関連ブログを表示させてみた。
BlogRanger APIではブログ検索結果をJSONP風のAPIで取得できる。そこで、関連ブログを表示させたいページのキーワードを抽出して、そのキーワードでのブログ検索結果を、事前に用意したテンプレートに埋め込んだ。
キーワード抽出には、tf-idf法や、Web APIを利用する方法があるが、今回はMeCabで形態素解析した結果から、ランダムに1つの名詞を選択することにした。
下記のサービスで動いています。
コードはこんな感じです。
JavaScriptコード
var BlogSearch = Class.create(); BlogSearch.prototype = { initialize: function(keyword){ this.keyword = keyword; this.mining(); }, mining: function(){ var bs = new Ranger.BlogSearch(); bs.successHandler(this.onSuccess.bind(this)); bs.hasKeyword(this.keyword); bs.restrictDate(7); bs.needsTitle(); bs.sortBy(Ranger.Search.SORT_SCORE); bs.searchByKeyword('', 1, 9); }, onSuccess: function(result){ try{ result.results.each(function(label, index){ var title = label.title; if(title.length > 15){ title = title.substr(0, 14) + "…"; } $("blogranger" + (index + 1)).innerHTML = '<a href="' + label.url + '">' + title + '</a>'; }); }catch(e){ } }
HTMLテンプレート
<div id = "blogranger"> <div id = "blogranger_title">関連ブログ</div> <table> <tr> <td> <div id = "blogranger1"> </div> <div id = "blogranger2"> </div> <div id = "blogranger3"> </div> </td> <td> <div id = "blogranger4"> </div> <div id = "blogranger5"> </div> <div id = "blogranger6"> </div> </td> <td> <div id = "blogranger7"> </div> <div id = "blogranger8"> </div> <div id = "blogranger9"> </div> </td> <td width="100px"> <!--BLOGRANGER--> <div id="ranger-promote"> <a title="by BLOGRANGER" href="http://ranger.labs.goo.ne.jp/" target="_blank"> <img style="border: 0;" alt="by BLOGRANGER" src="http://ranger.labs.goo.ne.jp/rpc/image/promote.gif" /></a> </div> <!--/BLOGRANGER--> </td> </tr> </table> </div>
利用コード
<script type="text/javascript" src="http://ranger.labs.goo.ne.jp/rpc/api.php"></script> <script type="text/javascript"> <!-- s = new BlogSearch("<%= keyword %>"); --> </script>