Heim >Datenbank >MySQL-Tutorial >So entwickeln Sie eine einfache Musikempfehlungsfunktion mit MySQL und Ruby on Rails
Um mit MySQL und Ruby on Rails eine einfache Musikempfehlungsfunktion zu entwickeln, sind spezifische Codebeispiele erforderlich
Mit der kontinuierlichen Expansion des Musikmarktes und der zunehmenden Vielfalt an Musik ist es für Benutzer schwierig, Musik zu finden das ihrem Geschmack entspricht. Daher ist es dringend erforderlich, eine Musikempfehlungsfunktion zu entwickeln. In diesem Artikel werden die MySQL-Datenbank und das Ruby on Rails-Framework als Grundlage verwendet, um die Entwicklung einer einfachen Musikempfehlungsfunktion vorzustellen und spezifische Codebeispiele bereitzustellen.
Schritt eins: Datenbank erstellen
Zuerst müssen wir eine MySQL-Datenbank erstellen, um Musikdaten und Benutzereinstellungen zu speichern. Das Folgende ist ein Beispiel für eine Rails-Migrationsdatei zum Erstellen von Datenbanktabellen:
class CreateSongs < ActiveRecord::Migration[6.0] def change create_table :songs do |t| t.string :title t.string :artist t.string :genre end end end class CreateUserPreferences < ActiveRecord::Migration[6.0] def change create_table :user_preferences do |t| t.references :user t.references :song t.integer :rating end end end
Der obige Code erstellt zwei Tabellen: songs
wird zum Speichern von Musikinformationen verwendet, einschließlich title
( Songtitel ), artist
(Künstler) und genre
(Musikgenre); user_preferences
wird verwendet, um die Bewertung des Benutzers für jedes Lied zu speichern. songs
用于存储音乐信息,包括title
(歌曲标题)、artist
(艺术家)和genre
(音乐类型);user_preferences
用于存储用户对每首歌曲的评分。
第二步:模型关系和数据填充
在Rails中,我们需要定义模型之间的关系。以下是示例的模型代码:
class Song < ApplicationRecord has_many :user_preferences has_many :users, through: :user_preferences end class User < ApplicationRecord has_many :user_preferences has_many :songs, through: :user_preferences end class UserPreference < ApplicationRecord belongs_to :user belongs_to :song end
以上代码定义了Song
、User
和 UserPreference
之间的关系。Song
和 User
之间是多对多关系,通过 UserPreference
来建立联系。
接下来,我们需要填充一些样本数据进入数据库。以下是一个示例的填充代码:
Song.create(title: 'Song 1', artist: 'Artist 1', genre: 'Pop') Song.create(title: 'Song 2', artist: 'Artist 2', genre: 'Rock') Song.create(title: 'Song 3', artist: 'Artist 3', genre: 'Jazz') User.create(name: 'User 1') User.create(name: 'User 2') User.create(name: 'User 3') UserPreference.create(user_id: 1, song_id: 1, rating: 4) UserPreference.create(user_id: 1, song_id: 2, rating: 5) UserPreference.create(user_id: 2, song_id: 2, rating: 3) UserPreference.create(user_id: 3, song_id: 3, rating: 2)
以上代码创建了3首歌曲、3个用户和4个用户偏好示例(用户对歌曲的评分)。
第三步:实现音乐推荐算法
接下来,我们需要实现一个简单的音乐推荐算法。以下是一个示例的推荐算法:
class RecommendationController < ApplicationController def index user = User.find(params[:user_id]) rated_songs = user.songs similar_users = User.where.not(id: user.id).joins(:songs) .where('songs.id IN (?)', rated_songs.pluck(:id)).distinct recommended_songs = similar_users.joins(:songs).where.not('songs.id IN (?)', rated_songs.pluck(:id)) .group(:song_id).average(:rating) @recommendations = Song.where(id: recommended_songs.keys) .order(recommended_songs.values.map(&:to_f).reverse) end end
以上代码定义了一个RecommendationsController
控制器,其中index
方法根据用户的偏好(即对歌曲的评分)计算相似用户和推荐的歌曲,并将结果存储在 @recommendations
In Rails müssen wir die Beziehungen zwischen Modellen definieren. Das Folgende ist der Modellcode für das Beispiel:
<h1>Recommendations for User <%= @user.name %></h1> <% @recommendations.each do |song| %> <p><%= song.title %></p> <p>Artist: <%= song.artist %></p> <p>Genre: <%= song.genre %></p> <% end %>Der obige Code definiert die Beziehung zwischen
Song
, User
und UserPreference
. Es besteht eine Viele-zu-Viele-Beziehung zwischen Song
und Benutzer
, und die Beziehung wird durch UserPreference
hergestellt. Als nächstes müssen wir einige Beispieldaten in die Datenbank eingeben. Hier ist der Füllcode für ein Beispiel: rrreee
Der obige Code erstellt 3 Songs, 3 Benutzer und 4 Benutzerpräferenzbeispiele (Benutzerbewertungen von Songs).
RecommendationsController
-Controller, bei dem die index
-Methode Ähnlichkeiten basierend auf den Präferenzen des Benutzers (d. h. Bewertungen von Songs) berechnet ) Benutzer- und empfohlene Songs und speichert die Ergebnisse in der Variablen @recommendations
. 🎜🎜Schritt 4: Ansicht erstellen🎜Der letzte Schritt besteht darin, eine Ansicht zu erstellen, um die empfohlenen Songs anzuzeigen. Hier ist ein einfacher Beispiel-Ansichtscode: 🎜rrreee🎜Der obige Code zeigt eine Liste der dem Benutzer empfohlenen Songs an. 🎜🎜Zusammenfassung: 🎜In diesem Artikel werden die Schritte zum Entwickeln einer einfachen Musikempfehlungsfunktion mithilfe von MySQL und Ruby on Rails vorgestellt. Von der Erstellung von Datenbanken und dem Auffüllen von Daten über die Definition von Modellbeziehungen und die Implementierung von Empfehlungsalgorithmen bis hin zur Erstellung von Ansichten zur Anzeige von Ergebnissen. Hoffentlich hilft dieses einfache Beispiel den Lesern zu verstehen, wie man Musikempfehlungsfunktionen mit MySQL und Ruby on Rails entwickelt. 🎜Das obige ist der detaillierte Inhalt vonSo entwickeln Sie eine einfache Musikempfehlungsfunktion mit MySQL und Ruby on Rails. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!