とりあえず、ダウンロードしてソースを見てみると、ソースは短いし、特に難しくもない印象。準備としては下記2つのテーブルを用意するだけ。
CREATE TABLE IF NOT EXISTS oso_user_ratings (
user_id int(11) NOT NULL,
item_id int(11) NOT NULL,
rating decimal(14,4) NOT NULL default '0.0000',
KEY item_id (item_id),
KEY user_id (user_id,item_id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS oso_slope_one (
item_id1 int(11) NOT NULL,
item_id2 int(11) NOT NULL,
times int(11) NOT NULL,
rating decimal(14,4) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Usageで、わかりにくいのは「1. Init the slope one table」くらいか。
何してるかはソース見ればわかるが、oso_user_ratingsに入ってるデータを基にoso_slope_oneにデータを入れている。$factoryが"MySQL"だとプロシージャで処理してるので、"PHP"でやるよりも速い。わからないなら指定しなきゃいんじゃね?
とりあえず今回の使用ではユーザにアイテムの評価をさせたりはしないので、アクセスログからユーザが見たアイテムをoso_user_ratingsに突っ込んでみる。突っ込んだらinitSlopeOneTableしてみると、oso_slope_oneにデータが入った。ratingを固定値にしたせいで、oso_slope_oneのratingがすべて0.00。order byで使われるのに全部0だと面白くないので、ratingはランダムにしておこう。
データの準備ができればあとはレコメンドを得るだけ。今回はアイテムベースのレコメンドをしたいので、getRecommendedItemsByIdを使用。何か良く分からないけど、レコメンドアイテムが得られました。
割と手軽にレコメンド機能ができたけど、レコメンド精度は入れたデータが適当なので良いのかはわからない。ひとまずは様子見。