ユーザー評価を採り入れた検索エンジン

急に午後が暇になったので、これを実装してみた。Rails + Google APIを使用して、大体4時間ぐらいで完成。Controllerが約150行程度。Viewはそれなりに。MacOSMySQLを動かす所で一番時間を食った...。


URL: http://221.112.61.214:3000/mod/


色々思う所は有るので、しばらく自分で使って効果の程を検証します。しかしこの仕組みを数十億人規模のユーザーに使わせた時にも、効率的に動くような実装方法を思い付かないんですよね。現在は評価された全てのURLとその評価値を全てDBに突っ込んでいるが、ユーザーが爆発的に多いとそういう訳にもいかない。かといって例えばDHTの様な仕組みで分散的に評価値を持たせても、保存する分には良いけど引っ張ってくる時に時間がかかるので現実的ではないしな。


後は、ユーザー <=> 評価したURLのマッピングも理想的にはサーバー側で保持する必要が有る。現在は簡易的にCookieを使用して過去に評価したURLを記憶している。これをすると、Cookie削除 -> 評価値上げ -> Cookie削除... とする事で優先度を上げる事が出来る。しかしこれもやっぱりDBに突っ込む訳にもいかんし(redditは突っ込んでいる)。


まぁ実装は問題だけど、とにかくフィルタリング性能が上がるかどうかが一番の問題なので、その辺りを検証してみる。もし、気が向いたら使ってみて下さいな。鯖がMacMiniなのでちょっと非力 + ネットワークがあんまり良くなくてBad Gateway連発するのでイライラするかもしれませんが...。良いサーバーで大規模にやりたいぃぃ。

        • -


今日一日検索はこれを使用してみた。とりあえず検索クエリーに合うものはバコスコ評価を上げてみた。


例: Haskell

おりじなるGoogle: http://www.google.com/search?q=Haskell&ie=UTF-8&oe=UTF-8
ユーザー評価付きGoogle: http://221.112.61.214:3000/mod/result?query%5Bstr%5D=Haskell&option%5Blang%5D=lang_en


"Haskell - America's Design-Build Leader"とかどうでも良いしね。やたらBad Gatewayが原因はどうもRuby-Google or SOAP4R周りな気がするので、YahooAPIに書き直してみよう。後はWEBRickが滅茶苦茶遅い...。

        • -


どうもRailsアプリの設置がうまくいかない。lighttpd, apache共に撃沈。こういうの嫌いなので諦めよ。