現在の位置: ホーム> 最新記事一覧> PHPとRedisを使用して高性能推奨エンジンを構築する方法

PHPとRedisを使用して高性能推奨エンジンを構築する方法

M66 2025-06-07

導入

インターネットテクノロジーの急速な開発により、推奨エンジンは多くのWebサイトやアプリケーションの不可欠なコアコンポーネントになりました。ユーザーの興味や行動に基づいて、関連するコンテンツまたは製品をインテリジェントに推奨できます。広く使用されているサーバー側の言語として、PHPは高性能Redisデータベースを備えた推奨システムの構築を効率的に実装できます。この記事では、PHPとRedisを使用して高性能推奨エンジンを実装する方法を詳細に紹介し、迅速なアクセスを容易にするコード例を備えています。

ステップ1:データモデルを設計します

推奨エンジンを構築する最初のステップは、合理的なデータモデルを設計することです。 eコマースのWebサイトを例にとると、ユーザーの購入履歴に基づいて関連製品を推奨する必要があります。 Redisのソートセットは、ユーザーと製品の関係を保存するのに最適です。要素は購入された製品であり、スコアはタイムスタンプを購入して、データの適時と順序を確保することができます。

ステップ2:ユーザーの動作データを収集します

ユーザーの行動データの収集と保存は、推奨エンジンの基礎です。たとえば、ユーザーが製品を購入したときに、Redisの対応するユーザーの順序付けられたセットにレコードを追加して、後続の分析と推奨生成を促進します。
 // サンプルコード
$user_id = 123; // ユーザーID
$product_id = 456; // 製品ID

// 注文されたコレクションに購入記録を追加します
$redis->zadd("user:$user_id:purchases", time(), $product_id);

ステップ3:ユーザーの類似性を計算します

パーソナライズされた推奨事項を達成するには、ユーザー間の類似性を計算する必要があります。一般的に使用されるコサイン類似性アルゴリズムを使用して、ユーザー購入動作の類似性を測定できます。すべてのユーザーデータを繰り返し、類似性を計算し、結果をRedisに格納してクイッククエリを保存します。
 // サンプルコード
$user_id = 123; // ユーザーID

// 获取该ユーザー的购买记录
$purchases = $redis->zrange("user:$user_id:purchases", 0, -1);

// 遍历所有ユーザー
foreach ($redis->keys("user:*:purchases") as $key) {
    if ($key != "user:$user_id:purchases") {
        $other_user_id = substr($key, 5, -10);
        // 获取另一个ユーザー的购买记录
        $other_purchases = $redis->zrange($key, 0, -1);

        // 计算两个ユーザー之间的相似度
        $similarity = cosine_similarity($purchases, $other_purchases);

        // 類似性を保存します Redis 真ん中
        $redis->zadd("user:$user_id:similarities", $similarity, $other_user_id);
    }
}

ステップ4:推奨される結果を生成します

ユーザーの類似性に基づいて、同様のユーザーの購入記録を組み合わせることで、現在のユーザーが購入していないが、同様のユーザーによって購入された製品が見つかり、推奨リストを生成します。推奨される結果は、Redisの順序付けられたセットにも保存され、スコアは推奨される重量を表します。
 // サンプルコード
$user_id = 123; // ユーザーID

// 获取与该ユーザー相似的ユーザー列表
$similar_users = $redis->zrevrange("user:$user_id:similarities", 0, -1);

// 遍历与该ユーザー相似的ユーザー
foreach ($similar_users as $similar_user_id) {
    // 获取相似ユーザー的购买记录
    $similar_purchases = $redis->zrange("user:$similar_user_id:purchases", 0, -1);

    // 计算相似ユーザー购买过但该ユーザー未购买的製品
    $recommendations = array_diff($similar_purchases, $purchases);

    // に推奨される結果を保存します Redis 真ん中
    foreach ($recommendations as $product_id) {
        $redis->zadd("user:$user_id:recommendations", $similarity, $product_id);
    }
}

ステップ5:推奨される結果を取得します

最後に、生成された推奨結果は、重量でソートおよび取得され、ユーザーに表示され、パーソナライズされた推奨機能を実装します。
 // サンプルコード
$user_id = 123; // ユーザーID

// 获取该ユーザー的推荐结果
$recommendations = $redis->zrevrange("user:$user_id:recommendations", 0, -1);

// 展示推荐结果给ユーザー
foreach ($recommendations as $product_id) {
    $product = get_product($product_id); // 获取製品信息
    echo $product['name'] . "<br>";
}

要約します

この記事では、PHPとRedisを使用して高性能推奨エンジンを構築する方法について説明します。データモデルを合理的に設計し、ユーザーの動作を効果的に収集し、ユーザーの類似性を計算し、類似性に基づいてパーソナライズされた推奨結果を生成することにより、実用的で優れたパフォーマンス推奨システムが構築されます。この記事が、インテリジェントな推奨機能を作成するための参照とヘルプを提供できることを願っています。