ホームページ >バックエンド開発 >PHPチュートリアル >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 サイトの他の関連記事を参照してください。