閲覧履歴とレコメンド
1.閲覧履歴 仕様
- サイト訪問者のアクセスログを収集し、
レコメンド/閲覧履歴
パーツにてページ、フォルダーの閲覧履歴を一覧表示することができる。 - 設定ファイルを有効にし、書き出しを実行することでアクセスログの収集を行える。(デフォルトでは無効)
- 設定を有効にすると、公開画面HTMLに、履歴収集用コントローラに対してAjaxアクセスを行うJavaScriptが仕込まれる。
- 上記スクリプトにてサイト訪問者のアクセスログを収集する。
- セッション別にトークンを発行し、サイト訪問者を記録する。
- 管理画面
「サイト設定>レコメンド機能>アクセス」
よりアクセスログを確認することができる。
2.レコメンド 仕様
レコメンド/閲覧履歴
パーツにて、類似度の高いページ、フォルダーを一覧表示することができる。- 類似度は
1.閲覧履歴
より収集されたアクセスログを利用する。 - アクセスログが存在する状態でスコア計算用のタスクを実行するとURL間の類似度が計算される。
- スコア計算の実装はシンプルに
jaccard 係数
を利用している。 - 管理画面
「サイト設定>レコメンド機能>類似度スコア」
よりURL間の類似度を確認することができる。
設定ファイル
config/defaults/recommend.yml
disable: true
有効化
disable: false
にすると、閲覧履歴の収集が有効になる。
$ cd /var/www/shirasagi
$ cp config/defaults/recommend.yml config/recommend.yml
$ vi config/recommend.yml
--------------
disable: false
--------------
DB設定
閲覧履歴の有効化により公開側のアクセスログがデータベースに保存されるようになる。
明示的に削除しない限り、ログが溜まり続けるので、
必要に応じて、ログのコレクション recommend_history_logs
に TTL index
を設定する。
TTL index 設定
$ mongo
>use ss
>db.recommend_history_logs.ensureIndex( { "created": 1 }, { expireAfterSeconds: 1209600 } )
※14日間 (1209600秒) のみログを保持
スコア計算タスク
以下のタスクを実行することで、類似度が計算されデータベースに保存される。
$ bundle exec rake recommend:create_similarity_scores site=www
スコア計算は、アクセスログ数によっては負荷が高い処理となる。
定期実行する場合は、深夜に実行するなどを検討する。