ホームページ  >  記事  >  バックエンド開発  >  php Elasticsearchを使用してインテリジェントなレコメンデーション機能を実装するにはどうすればよいですか?

php Elasticsearchを使用してインテリジェントなレコメンデーション機能を実装するにはどうすればよいですか?

WBOY
WBOYオリジナル
2023-09-13 10:28:551484ブラウズ

如何使用php Elasticsearch实现智能推荐功能?

PHP Elasticsearch を使用してインテリジェントなレコメンデーション機能を実装するにはどうすればよいですか?

スマートな推奨事項は、最新のアプリケーションにおける一般的かつ重要な機能の 1 つです。ユーザーの好み、行動、履歴データに基づいて、関連するコンテンツや製品を自動的に推奨することで、ユーザー エクスペリエンスを向上させ、双方向性を高めることができます。この記事では、PHP Elasticsearch を使用してインテリジェントなレコメンデーション機能を実装する方法を検討し、具体的なコード例を示します。

  1. Elasticsearch のインストールと構成

まず、ローカル環境に Elasticsearch をインストールして構成する必要があります。 Elasticsearch の公式 Web サイトから最新の安定バージョンをダウンロードし、公式ドキュメントのガイドラインに従ってインストールおよび設定できます。インストールが完了したら、Elasticsearch が正常に実行されており、http://localhost:9200 でアクセスできることを確認します。

  1. インデックスとマッピングの作成

コードを書き始める前に、インデックスを作成し、対応するマッピングを定義する必要があります。この例では、製品レコメンデーション機能を実装すると仮定して、「products」という名前のインデックスを作成できます。以下は、インデックスとマッピングを作成するためのサンプル コードです。

PUT /products
{
  "mappings": {
    "properties": {
      "title": { "type": "text" },
      "category": { "type": "keyword" },
      "tags": { "type": "keyword" },
      "price": { "type": "float" }
    }
  }
}

実際のニーズに応じて、マッピングのフィールド タイプと属性を調整できます。

  1. データをインデックスに追加する

実際の使用では、Elasticsearch が検索して推奨できるように、インデックスに商品データを追加する必要があります。以下は、データを追加するためのサンプル コードです。

require 'vendor/autoload.php';

use ElasticsearchClientBuilder;

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

$params = [
    'index' => 'products',
    'body' => [
        ['index' => ['_index' => 'products']],
        ['title' => 'Product 1', 'category' => 'Category 1', 'tags' => ['tag1', 'tag2'], 'price' => 10.99],
        ['index' => ['_index' => 'products']],
        ['title' => 'Product 2', 'category' => 'Category 2', 'tags' => ['tag3', 'tag4'], 'price' => 20.99],
        // 添加更多商品数据...
    ]
];

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

// 检查添加是否成功
if ($response['errors']) {
    foreach($response['items'] as $item) {
        if ($item['index']['status'] !== 201) {
            echo "Failed to add product: " . $item['index']['error']['reason'];
        }
    }
} else {
    echo "Products added successfully.";
}

上記のサンプル コードでは、Elasticsearch が提供する PHP クライアント ライブラリ (Elasticsearch-PHP) を使用して Elasticsearch と対話します。まず、ClientBuilder を使用して Elasticsearch クライアント インスタンスを作成します。次に、bulk メソッドを使用して、商品データをインデックスにバッチで追加します。

  1. インテリジェントな推奨アルゴリズムの実装

データがインデックスに正常に追加されたら、インテリジェントな推奨アルゴリズムの実装を開始できます。

まず、コレクションのターゲット ユーザー (または現在のユーザー) が興味を持っている製品カテゴリ、タグ、またはその他の属性を決定する必要があります。その後、Elasticsearch のクエリ機能を使用して、関連アイテムを検索して返すことができます。ユーザーのタグに一致するアイテムを検索するためのサンプル コード スニペットを次に示します。

$params = [
    'index' => 'products',
    'body' => [
        'query' => [
            'terms' => [
                'tags' => ['user_tag_1', 'user_tag_2']
            ]
        ]
    ]
];

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

// 处理搜索结果
if ($response['hits']['total']['value'] > 0) {
    foreach ($response['hits']['hits'] as $hit) {
        echo $hit['_source']['title'] . ', ' . $hit['_source']['price'] . PHP_EOL;
    }
} else {
    echo "No products found.";
}

上記のサンプル コードでは、Elasticsearch の terms クエリを使用して、ユーザーのタグに一致するアイテムを検索します。 $params配列は検索条件とインデックス名を指定します。 search メソッドを使用して検索を実行し、返された結果を処理します。

ユーザーの実際のニーズに応じて、複数フィールドの一致、範囲クエリなど、より複雑なクエリ条件を使用できます。 Elasticsearch は、実際のニーズに応じて調整できる豊富なクエリ構文と関数を提供します。

  1. 完全な例

以下は、PHP Elasticsearch を使用してインテリジェントなレコメンデーション機能を実装する方法を示す完全な例です。

require 'vendor/autoload.php';

use ElasticsearchClientBuilder;

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

// 创建索引和映射
$params = [
    'index' => 'products',
    'body' => [
        "mappings" => [
            "properties" => [
                "title" => [
                    "type" => "text"
                ],
                "category" => [
                    "type" => "keyword"
                ],
                "tags" => [
                    "type" => "keyword"
                ],
                "price" => [
                    "type" => "float"
                ]
            ]
        ]
    ]
];

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

// 添加数据到索引
$params = [
    'index' => 'products',
    'body' => [
        ['index' => ['_index' => 'products']],
        ['title' => 'Product 1', 'category' => 'Category 1', 'tags' => ['tag1', 'tag2'], 'price' => 10.99],
        ['index' => ['_index' => 'products']],
        ['title' => 'Product 2', 'category' => 'Category 2', 'tags' => ['tag3', 'tag4'], 'price' => 20.99],
        // 添加更多商品数据...
    ]
];

$client->bulk($params);

// 执行智能推荐算法
$params = [
    'index' => 'products',
    'body' => [
        'query' => [
            'terms' => [
                'tags' => ['user_tag_1', 'user_tag_2']
            ]
        ]
    ]
];

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

// 处理搜索结果
if ($response['hits']['total']['value'] > 0) {
    foreach ($response['hits']['hits'] as $hit) {
        echo $hit['_source']['title'] . ', ' . $hit['_source']['price'] . PHP_EOL;
    }
} else {
    echo "No products found.";
}

上記の例では、 , まず「product」というインデックスを作成し、対応するマッピングを定義しました。次に、サンプル製品データをインデックスに追加しました。最後に、ユーザー タグに基づいて関連する製品を検索して返すインテリジェントな推奨アルゴリズムを実装します。

実際のニーズに応じてコードを調整し、ドキュメントの指示に従ってより詳細な構成とチューニングを実行してください。この記事が、PHP Elasticsearch を使用してインテリジェントなレコメンデーション機能を実装する方法を理解するのに役立つことを願っています。

以上がphp Elasticsearchを使用してインテリジェントなレコメンデーション機能を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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