ホームページ >バックエンド開発 >PHPチュートリアル >PHP と Elasticsearch を使用して検索結果を推奨する方法
PHP と Elasticsearch を使用して検索結果を推奨する方法
インターネット テクノロジーの継続的な発展により、情報を取得するための最初の選択肢は検索エンジンになりました。より良いユーザー エクスペリエンスを提供するために、検索エンジンは、より関連性が高くパーソナライズされた検索結果をユーザーに提供する推奨システムを導入しました。この記事では、PHP と Elasticsearch を使用して検索結果のレコメンデーションを実装する方法を紹介します。
まず、Elasticsearch をインストールする必要があります。 Elasticsearch の公式 Web サイトから最新の安定バージョンをダウンロードし、公式ドキュメントに従ってインストールできます。
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()
メソッドを使用してインデックスを作成します。
ユーザーが検索操作を実行するとき、ユーザーの検索レコードを Elasticsearch に保存する必要があります。以下は簡単なサンプル コードです:
$params = [ 'index' => 'search_history', 'type' => 'search', 'body' => [ 'user_id' => 1, 'keyword' => 'Elasticsearch' ] ]; $response = $client->index($params);
このコードは index()
メソッドを使用してユーザーの検索履歴を Elasticsearch に保存します。このうち、index
パラメータはインデックス名を指定し、type
パラメータはドキュメントの種類を指定し、body
パラメータは特定のドキュメントの内容を指定します。
ユーザーの検索履歴を取得した後、ユーザーの検索履歴に基づいて検索の推奨事項を生成できます。以下は簡単なサンプル コードです。
$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
変数に保存し、後で使用できるようにします。
最後に、推奨キーワードをユーザーに表示できます。以下は簡単なサンプル コードです。
foreach ($recommended_keywords as $keyword) { echo $keyword['key'] . ' (' . $keyword['doc_count'] . ')'; }
このコードは、推奨キーワードを反復処理し、キーワードとその出現数をユーザーに表示します。ニーズに応じて、検索結果の自動補完や、おすすめキーワードによる関連検索などの機能も提供できます。
結論
この記事では、PHP と Elasticsearch を使用して検索結果のレコメンデーションを実装する方法を紹介します。ユーザーの検索履歴を保存し、Elasticsearchの集計機能を利用して推奨キーワードを生成することで、ユーザーにより良い検索体験を提供できます。もちろん、上記は単なる例であり、実際のレコメンデーション システムでは、よりパーソナライズされたレコメンデーション結果を提供するために、より複雑なアルゴリズムと戦略が必要になる場合があります。この記事が、検索エンジンやレコメンデーション システムを構築する際の参考になれば幸いです。
以上がPHP と Elasticsearch を使用して検索結果を推奨する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。