ログインしたユーザーにパーソナライズされた検索結果を提供する方法には、どのようなものがありますか?私が考えることの1つの方法は、ユーザーの閲覧履歴を分析することです。履歴に基づくパーソナライズ検索の結果
トラッキング:閲覧したページや 'like'ボタンをクリックしたようなユーザーのアクティビティのログを使用して、検索結果にバイアスをかけることができます。
質問1:ユーザーの閲覧履歴をどのようにトラッキングしていますか?列があるテーブルuser_id
,number_of_hits
,?私は毎日1000人の訪問者を持っていて、それぞれ平均10ページを閲覧していますが、パーソナライズされた推奨が必要なときは、select
に多数のレコードがありませんか?テーブルは月に300K行で成長します!検索が行われるたびに行がselect
に長くなります。 私は 'likes'を記録するためのテーブルは同じテーブルデザインを取ると思います。
質問2:検索結果に偏りはありますか?例えば、ユーザーがリンゴ製品を探していた場合、検索エンジンrealise
は、ユーザーがリンゴ製品を好きで、後でそれらに向かって検索をバイアスするのでしょうか?ページにタグを付け、訪問したページにタグのレコードを蓄積しますか?
)、ページのタグ付けは最も簡単な場合にのみ役立ちます。より良いアプローチは、ページ/ユーザー/などの間の依存関係を把握するために履歴テーブルにアソシエーションルールマイニングアルゴリズム(頻繁なアイテムセット/ aprioriなど)を実行してから、最も重要なアイテムセット(例:どのような信頼とサポートが有効です) – Mario
これらはすべて私に新しいです、これはmysqlで行うことができますか?あなたはこれに関するチュートリアルを知っていますか? – Nyxynyx
これは本当に難しいことではありません。 パーティション化:範囲パーティション化(http://dev.mysql.com/doc/refman/5.1/en/partitioning-range.html) インデックス作成:単純なbtreeインデックスtablename(timestamp)にインデックスidxnameを作成します)。 mysqlでは、すべてのインデックスがデフォルトでパーティションになっています(oracleとは異なります)。 レポート/マイニングジョブには、スケジュールされたジョブ(http://dev.mysql.com/doc/refman/5.1/en/events-overview.html)の2つのオプションがあります。すなわち、必要な行を取り出し、アルゴリズムをオフラインで実行し、結果をデータベースに戻す。あなたの場合に依存します。 – Mario