ホームページ  >  記事  >  バックエンド開発  >  PHP の Elasticsearch に基づく製品の推奨とパーソナライズされた検索

PHP の Elasticsearch に基づく製品の推奨とパーソナライズされた検索

PHPz
PHPzオリジナル
2023-10-03 08:09:11754ブラウズ

PHP 中基于 Elasticsearch 的商品推荐与个性化搜索

タイトル: PHP の Elasticsearch に基づく製品レコメンデーションとパーソナライズされた検索

記事本文:
はじめに:
電子商取引の継続的な発展に伴い、製品の推奨とパーソナライズされた検索の重要性がますます高まっています。ユーザーは数多くの商品の中から自分のニーズに合った商品を早く見つけたいと考えており、販売者もレコメンドシステムを通じてユーザーに最適な商品を提示する必要があります。 PHP 開発では、Elasticsearch を使用して製品レコメンデーションとパーソナライズされた検索を実装することが、より一般的なソリューションの 1 つです。この記事では、Elasticsearch に基づいた製品レコメンデーションとパーソナライズされた検索を実装する方法を紹介し、具体的なコード例を示します。

1. Elasticsearch の基本概念
Elasticsearch は、大量のデータのインデックス付けと検索を迅速に行うことができるオープンソースの高性能検索エンジンです。 Elasticsearch を使用する前に、次の基本概念を理解する必要があります:

1.1 インデックス (インデックス): リレーショナル データベースのデータベースと同様に、インデックスはデータをグループ化して整理するために使用される論理概念です。複数のタイプ (Type) が含まれています。

1.2 タイプ: リレーショナル データベースのテーブルと同様に、各タイプには独自のフィールドと属性があります。

1.3 ドキュメント: リレーショナル データベースの行やレコードと同様、ドキュメントは Elasticsearch ストレージの基本単位です。

1.4 マッピング: リレーショナル データベースのスキーマと同様に、マッピングはフィールドのタイプと属性を定義するために使用されます。

2. 製品レコメンデーションの実装
製品レコメンデーションでは、Elasticsearch の関連性スコアを使用してそれを達成できます。具体的な手順は次のとおりです。

2.1 インデックスと型の作成
まず、製品データを格納するためのインデックスを作成し、製品情報を記述するための型を定義する必要があります。 Elasticsearch が提供する PHP クライアントを使用して Elasticsearch サーバーに接続し、次のコードを実行できます。

require 'vendor/autoload.php';

$client = ElasticsearchClientBuilder::create()->build();

$params = [
    'index' => 'product',
    'body' => [
        'mappings' => [
            'type' => [
                'properties' => [
                    'name' => [
                        'type' => 'text',
                        'analyzer' => 'standard'
                    ],
                    'category' => [
                        'type' => 'keyword'
                    ],
                    'price' => [
                        'type' => 'double'
                    ]
                ]
            ]
        ]
    ]
];

$client->indices()->create($params);

2.2 製品データのインポート
次に、製品データを Elasticsearch にインポートする必要があります。 Elasticsearch の一括挿入機能を使用して、商品データを一括で Elasticsearch にインポートできます。サンプルコードは次のとおりです:

$products = [
    ['name' => 'iPhone 12', 'category' => '手机', 'price' => 7999],
    ['name' => 'MacBook Pro', 'category' => '电脑', 'price' => 10999],
    ['name' => 'AirPods Pro', 'category' => '耳机', 'price' => 1999]
];

$params = [
    'index' => 'product',
    'type' => 'type',
    'body' => []
];

foreach ($products as $product) {
    $params['body'][] = [
        'index' => [
            '_index' => 'product',
            '_type' => 'type'
        ]
    ];
    
    $params['body'][] = $product;
}

$client->bulk($params);

2.3 商品レコメンデーション クエリ
商品レコメンデーションを実装するには、ユーザーの現在の感情に基づいてクエリを実行します。製品に興味がある場合は、その製品により密接に関連する他の製品を検索します。サンプル コードは次のとおりです。

$params = [
    'index' => 'product',
    'type' => 'type',
    'body' => [
        'query' => [
            'more_like_this' => [
                'fields' => ['name'],
                'like' => [
                    ['_index' => 'product', '_id' => '1'] // 假设用户感兴趣的商品编号为 1
                ],
                'min_term_freq' => 1,
                'max_query_terms' => 20
            ]
        ]
    ]
];

$response = $client->search($params);

上記のコードは、ユーザーが関心のある製品に関連性の高い他の製品のセットを返します。

3. パーソナライズされた検索の実装
パーソナライズされた検索では、ユーザーの検索習慣や好みに基づいて、よりパーソナライズされた検索結果をユーザーに提供できます。

3.1 ユーザーの検索履歴を記録する
まず、ユーザーの検索履歴を記録する必要があります。ユーザーの検索履歴は、Redis またはデータベースを使用して保存できます。サンプルコードは以下のとおりです。

$userId = 1; // 假设用户编号为 1
$keyword = 'iPhone';

// 存储用户搜索记录
$redis->sadd("user:$userId:search_history", $keyword);

3.2 パーソナライズされた検索クエリの構築
ユーザーの検索履歴に基づいて、ユーザーがよく検索するキーワードをクエリ条件としたクエリを構築できます。サンプル コードは次のとおりです。

$params = [
    'index' => 'product',
    'type' => 'type',
    'body' => [
        'query' => [
            'bool' => [
                'should' => [
                    ['match' => ['name' => $keyword1]], // 用户搜索历史中的关键词1
                    ['match' => ['name' => $keyword2]], // 用户搜索历史中的关键词2
                    // ...
                ]
            ]
        ]
    ]
];

$response = $client->search($params);

上記のコードは、ユーザーの検索履歴に基づいて構築されたパーソナライズされた検索結果を返します。

結論:
Elasticsearch を使用することで、製品のレコメンド機能やパーソナライズされた検索機能を簡単に実装できます。この記事では、Elasticsearch をベースにした製品レコメンデーションとパーソナライズド検索の実装方法を紹介し、具体的な PHP コード例を示します。この記事が PHP 開発者の製品推奨やパーソナライズされた検索に役立つことを願っています。

以上がPHP の Elasticsearch に基づく製品の推奨とパーソナライズされた検索の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。