ホームページ >バックエンド開発 >PHPチュートリアル >PHP と Elasticsearch を使用して検索結果を推奨する方法

PHP と Elasticsearch を使用して検索結果を推奨する方法

PHPz
PHPzオリジナル
2023-07-17 08:32:021620ブラウズ

PHP と Elasticsearch を使用して検索結果を推奨する方法

インターネット テクノロジーの継続的な発展により、情報を取得するための最初の選択肢は検索エンジンになりました。より良いユーザー エクスペリエンスを提供するために、検索エンジンは、より関連性が高くパーソナライズされた検索結果をユーザーに提供する推奨システムを導入しました。この記事では、PHP と Elasticsearch を使用して検索結果のレコメンデーションを実装する方法を紹介します。

  1. Elasticsearch のインストール

まず、Elasticsearch をインストールする必要があります。 Elasticsearch の公式 Web サイトから最新の安定バージョンをダウンロードし、公式ドキュメントに従ってインストールできます。

  1. インデックスの作成

Elasticsearch では、データはインデックスの形式で保存されます。インデックスを作成する前に、インデックスのマッピングを定義する必要があります。この記事では、ユーザーの検索履歴を推奨の基礎として使用するため、ユーザーの検索履歴を含むインデックスを作成する必要があります。インデックス名が「search_history」、ドキュメント タイプが「search」であると仮定すると、次のコードを使用してインデックスを作成できます。

require 'vendor/autoload.php';

use ElasticsearchClientBuilder;

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

$params = [
    'index' => 'search_history',
    'body' => [
        'mappings' => [
            'search' => [
                'properties' => [
                    'user_id' => ['type' => 'integer'],
                    'keyword' => ['type' => 'text']
                ]
            ]
        ]
    ]
];

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

このコードは、Elasticsearch-PHP ライブラリを使用して Elasticsearch と対話します。まず、Elasticsearch クライアント オブジェクトを作成し、次にインデックス マッピングを定義し、indices()->create() メソッドを使用してインデックスを作成します。

  1. 検索履歴の保存

ユーザーが検索操作を実行するとき、ユーザーの検索レコードを Elasticsearch に保存する必要があります。以下は簡単なサンプル コードです:

$params = [
    'index' => 'search_history',
    'type' => 'search',
    'body' => [
        'user_id' => 1,
        'keyword' => 'Elasticsearch'
    ]
];

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

このコードは index() メソッドを使用してユーザーの検索履歴を Elasticsearch に保存します。このうち、index パラメータはインデックス名を指定し、type パラメータはドキュメントの種類を指定し、body パラメータは特定のドキュメントの内容を指定します。

  1. 検索の推奨事項を取得する

ユーザーの検索履歴を取得した後、ユーザーの検索履歴に基づいて検索の推奨事項を生成できます。以下は簡単なサンプル コードです。

$params = [
    'index' => 'search_history',
    'type' => 'search',
    'body' => [
        'query' => [
            'match' => [
                'keyword' => 'Elasticsearch'
            ]
        ],
        'aggs' => [
            'recommended_keywords' => [
                'terms' => [
                    'field' => 'keyword'
                ]
            ]
        ]
    ]
];

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

$recommended_keywords = $response['aggregations']['recommended_keywords']['buckets'];

このコードでは、search() メソッドを使用して検索操作を実行し、集計を使用して推奨キーワードを取得します。集計は Elasticsearch の一般的な分析操作であり、データのカウント、グループ化、フィルター処理に使用されます。

上記のコードでは、query パラメータを使用して検索条件を指定していますが、ここでは例として「Elasticsearch」に一致する「キーワード」フィールドを使用しています。 aggs パラメータは集計操作の定義に使用され、terms パラメータは「keyword」フィールドに従って集計を指定し、結果を「recommended_keywords」に保存します。最後に、推奨キーワードを $recommended_keywords 変数に保存し、後で使用できるようにします。

  1. 検索の推奨事項の表示

最後に、推奨キーワードをユーザーに表示できます。以下は簡単なサンプル コードです。

foreach ($recommended_keywords as $keyword) {
    echo $keyword['key'] . ' (' . $keyword['doc_count'] . ')';
}

このコードは、推奨キーワードを反復処理し、キーワードとその出現数をユーザーに表示します。ニーズに応じて、検索結果の自動補完や、おすすめキーワードによる関連検索などの機能も提供できます。

結論

この記事では、PHP と Elasticsearch を使用して検索結果のレコメンデーションを実装する方法を紹介します。ユーザーの検索履歴を保存し、Elasticsearchの集計機能を利用して推奨キーワードを生成することで、ユーザーにより良い検索体験を提供できます。もちろん、上記は単なる例であり、実際のレコメンデーション システムでは、よりパーソナライズされたレコメンデーション結果を提供するために、より複雑なアルゴリズムと戦略が必要になる場合があります。この記事が、検索エンジンやレコメンデーション システムを構築する際の参考になれば幸いです。

以上がPHP と Elasticsearch を使用して検索結果を推奨する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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