Comment exploiter Elasticsearch et PHP pour la recherche et la recommandation musicales
Présentation
Sur les plateformes de streaming musical, il est crucial d'obtenir une recherche musicale rapide et précise et des recommandations personnalisées. Elasticsearch est un moteur de recherche et d'analyse open source populaire qui fonctionne bien pour créer un tel système. Cet article explique comment utiliser Elasticsearch et PHP pour implémenter des fonctions de recherche et de recommandation musicales, et fournit des exemples de code pertinents.
# 安装Elasticsearch $ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-{version}.tar.gz $ tar -xvf elasticsearch-{version}.tar.gz $ cd elasticsearch-{version}/bin $ ./elasticsearch # 创建索引和映射 $ curl -XPUT 'http://localhost:9200/music' -H 'Content-Type: application/json' -d ' { "mappings": { "properties": { "title": { "type": "text" }, "artist": { "type": "text" }, "genre": { "type": "keyword" } } } } '
require 'vendor/autoload.php'; $hosts = ['localhost:9200']; $client = ElasticsearchClientBuilder::create()->setHosts($hosts)->build(); // 导入音乐数据 $music1 = [ 'title' => 'Song 1', 'artist' => 'Artist 1', 'genre' => 'Pop' ]; $music2 = [ 'title' => 'Song 2', 'artist' => 'Artist 2', 'genre' => 'Rock' ]; $params = [ 'index' => 'music', 'id' => 1, 'body' => $music1 ]; $response = $client->index($params); $params = [ 'index' => 'music', 'id' => 2, 'body' => $music2 ]; $response = $client->index($params);
match
d'Elasticsearch pour effectuer une recherche en texte intégral. Voici un exemple d'extrait de code : match
查询来执行全文搜索。以下是一个示例代码片段:// 执行搜索 $params = [ 'index' => 'music', 'body' => [ 'query' => [ 'match' => [ 'title' => 'song' ] ] ] ]; $response = $client->search($params); // 处理搜索结果 foreach ($response['hits']['hits'] as $hit) { $music = $hit['_source']; echo 'Title: ' . $music['title'] . ', Artist: ' . $music['artist'] . ', Genre: ' . $music['genre']; echo " "; }
more_like_this
// 执行推荐查询 $params = [ 'index' => 'music', 'body' => [ 'query' => [ 'more_like_this' => [ 'fields' => ['title', 'artist'], 'like' => [ '_index' => 'music', '_id' => 1 ] ] ] ] ]; $response = $client->search($params); // 处理推荐结果 foreach ($response['hits']['hits'] as $hit) { $music = $hit['_source']; echo 'Title: ' . $music['title'] . ', Artist: ' . $music['artist'] . ', Genre: ' . $music['genre']; echo " "; }
Enfin, nous présenterons comment implémenter la fonction de recommandation musicale. Nous pouvons utiliser la requête more_like_this
d'Elasticsearch pour trouver une musique similaire à une musique donnée. Voici un exemple d'extrait de code :
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!