レコメンドエンジンを検討してみた

運営してるサイトへレコメンド機能を導入するため、レコメンドエンジンをどうするか検討している。
考えられる選択肢は現段階では3つ。

  1. Cicindelaの導入
  2. Vogooの導入
  3. 新規エンジンの構築

とりあえず、前者二つを比較検討してみる。

Cicindela Vogoo
実装言語 Perl PHP
対応DB MySQL >= 5.0 MySQL, PostgreSQL
インターフェイス WebAPI PHPクラス
インストール 全手動,キモイ*1 Webインターフェイスあり
柔軟性 ×
マニュアル 日本語と英語 英語のみ
ソースの美しさ ×
他への影響 設定次第 global変数で汚染
利用実績 livedoor クリップ 映画生活

CicindelaはMySQLのMemoryストレージエンジン*2を用いたメモリ上の一時テーブルを中間テーブルに利用することで高速化を図っているっぽい。単純化したWebAPIを用いるという発想は秀逸。また、内部アーキテクチャも洗練されていて十分な柔軟性を持っている。一方で、インストール周りで泥臭さが残っていて導入の敷居は高そう。

VogooはPHPライブラリで、しかも上位版を販売しているので期待したのですがPHP4なライブラリで、しかも一見しただけでglobal変数の汚染やSQLインジェクション脆弱性が見つかり頂けない感じでした。インストール用Webインターフェイスが用意されていて手軽に利用できる一方で柔軟性や安全性などに多くの問題を抱えていおり個人的には避けたいと思いました。

ということで、既存のものを使うとしたらCicindelaに決まりです。

*1:紹介されているMySQLApacheの設定は他のMySQLApacheで他のサービスが動いている場合影響を与えることがある

*2:別名 Heapストレージエンジン