Maison > Article > développement back-end > Comment utiliser PHP et Elasticsearch pour recommander des résultats de recherche
Comment utiliser PHP et Elasticsearch pour recommander des résultats de recherche
Avec le développement continu de la technologie Internet, les moteurs de recherche sont devenus notre premier choix pour obtenir des informations. Afin d'offrir une meilleure expérience utilisateur, les moteurs de recherche ont introduit des systèmes de recommandation pour fournir aux utilisateurs des résultats de recherche plus pertinents et personnalisés. Cet article explique comment utiliser PHP et Elasticsearch pour implémenter les recommandations de résultats de recherche.
Tout d'abord, nous devons installer Elasticsearch. Vous pouvez télécharger la dernière version stable sur le site officiel d'Elasticsearch et l'installer conformément à la documentation officielle.
Dans Elasticsearch, les données sont stockées sous forme d'index. Avant de créer un index, nous devons définir le mappage de l'index. Dans cet article, nous utiliserons l'historique de recherche des utilisateurs comme base des recommandations. Nous devons donc créer un index contenant l'historique de recherche des utilisateurs. En supposant que le nom de notre index est « search_history » et que le type de document est « search », nous pouvons utiliser le code suivant pour créer un index :
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);
Ce code utilise la bibliothèque Elasticsearch-PHP pour interagir avec Elasticsearch. Tout d'abord, nous créons un objet client Elasticsearch, puis définissons le mappage d'index et utilisons la méthode indices()->create()
pour créer l'index. 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()
方法来进行搜索操作,并使用了聚合(aggregation)来获取推荐的关键词。聚合是Elasticsearch中一种常见的分析操作,用于统计、分组和过滤数据。
以上代码中,query
参数用于指定搜索条件,这里以"keyword"字段匹配"Elasticsearch"作为示例。而aggs
参数则用于定义聚合操作,terms
参数指定了按照"keyword"字段进行聚合,并将结果存储在"recommended_keywords"中。最后,我们将推荐的关键词保存在$recommended_keywords
foreach ($recommended_keywords as $keyword) { echo $keyword['key'] . ' (' . $keyword['doc_count'] . ')'; }
Ce code utilise la méthode index()
pour stocker l'historique de recherche des utilisateurs dans Elasticsearch. Parmi eux, le paramètre index
spécifie le nom de l'index, le paramètre type
spécifie le type de document et le paramètre body
est le contenu spécifique du document.
Obtenir des recommandations de recherche
Après avoir obtenu l'historique de recherche de l'utilisateur, nous pouvons générer des recommandations de recherche basées sur l'historique de recherche de l'utilisateur. Voici un exemple de code simple :rrreee
Ce code utilise la méthodesearch()
pour effectuer des opérations de recherche et utilise l'agrégation pour obtenir les mots-clés recommandés. L'agrégation est une opération d'analyse courante dans Elasticsearch, utilisée pour compter, regrouper et filtrer les données. 🎜🎜Dans le code ci-dessus, le paramètre query
est utilisé pour spécifier les conditions de recherche. Ici, le champ "mot-clé" correspondant à "Elasticsearch" est utilisé comme exemple. Le paramètre aggs
est utilisé pour définir l'opération d'agrégation, et le paramètre terms
spécifie l'agrégation en fonction du champ "keyword" et stocke le résultat dans "recommended_keywords". Enfin, nous enregistrons les mots-clés recommandés dans la variable $recommended_keywords
pour une utilisation ultérieure. 🎜🎜🎜Afficher les recommandations de recherche🎜🎜🎜Enfin, nous pouvons afficher les mots-clés recommandés à l'utilisateur. Voici un exemple de code simple : 🎜rrreee🎜Ce code parcourt les mots-clés recommandés et affiche les mots-clés et leur nombre d'occurrences à l'utilisateur. En fonction des besoins spécifiques, nous pouvons également proposer des fonctions telles que la complétion automatique des résultats de recherche et des recherches associées basées sur des mots-clés recommandés. 🎜🎜Conclusion🎜🎜Cet article explique comment utiliser PHP et Elasticsearch pour implémenter les recommandations de résultats de recherche. En stockant l'historique de recherche des utilisateurs et en utilisant la fonction d'agrégation d'Elasticsearch pour générer des mots-clés recommandés, nous pouvons offrir aux utilisateurs une meilleure expérience de recherche. Bien entendu, ce qui précède n’est qu’un exemple simple, et les systèmes de recommandation actuels peuvent nécessiter des algorithmes et des stratégies plus complexes pour fournir des résultats de recommandation plus personnalisés. J'espère que cet article pourra vous aider lors de la création de moteurs de recherche et de systèmes de recommandation. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!