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

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

Oct 03, 2023 am 08:09 AM
php elasticsearch おすすめと検索

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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

See all articles