Cara memanfaatkan Elasticsearch dan PHP untuk carian dan pengesyoran muzik
Ikhtisar
Pada platform penstriman muzik, mencapai carian muzik yang pantas dan tepat serta pengesyoran diperibadikan adalah penting. Elasticsearch ialah enjin carian dan analitik sumber terbuka popular yang berfungsi dengan baik untuk membina sistem sedemikian. Artikel ini akan memperkenalkan cara menggunakan Elasticsearch dan PHP untuk melaksanakan carian muzik dan fungsi pengesyoran, serta menyediakan contoh kod yang berkaitan.
# 安装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
Elasticsearch untuk melakukan carian teks penuh. Berikut ialah contoh coretan kod: 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 " "; }
Akhir sekali, kami akan memperkenalkan cara melaksanakan fungsi pengesyoran muzik. Kami boleh menggunakan pertanyaan more_like_this
Elasticsearch untuk mencari muzik yang serupa dengan muzik tertentu. Berikut ialah contoh coretan kod:
Atas ialah kandungan terperinci Cara menggunakan Elasticsearch dan PHP untuk carian muzik dan cadangan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!