MySQL과 Ruby on Rails를 사용하여 간단한 음악 추천 기능을 개발하는 방법에는 구체적인 코드 예제가 필요합니다.
음악 시장이 지속적으로 확장되고 음악이 다양해짐에 따라 사용자가 음악을 찾기가 어렵습니다. 그게 그 사람들 입맛에 맞는 거죠. 따라서 음악 추천 기능의 개발이 매우 필요하다. 이 기사에서는 MySQL 데이터베이스와 Ruby on Rails 프레임워크를 기반으로 간단한 음악 추천 기능을 개발하는 방법을 소개하고 구체적인 코드 예제를 제공합니다.
1단계: 데이터베이스 만들기
먼저, 음악 데이터와 사용자 기본 설정을 저장할 MySQL 데이터베이스를 만들어야 합니다. 다음은 데이터베이스 테이블 생성을 위한 Rails 마이그레이션 파일의 예입니다.
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
위 코드는 두 개의 테이블을 생성합니다. songs
는 제목
(노래 제목)을 포함한 음악 정보를 저장하는 데 사용됩니다. ), artist
(아티스트) 및 genre
(음악 장르)는 각 노래에 대한 사용자 평가를 저장하는 데 사용됩니다. 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
Rails에서는 모델 간의 관계를 정의해야 합니다. 다음은 예시의 모델 코드입니다.
<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 %>위 코드는
Song
, User
및 UserPreference
간의 관계를 정의합니다. 노래
와 사용자
사이에는 다대다 관계가 있으며, 관계는 UserPreference
를 통해 설정됩니다. 다음으로 일부 샘플 데이터를 데이터베이스에 채워야 합니다. 예를 들어 채우는 코드는 다음과 같습니다. rrreee
위 코드는 3개의 노래, 3명의 사용자 및 4개의 사용자 선호도 예제(노래에 대한 사용자 평가)를 생성합니다.
RecommendationsController
컨트롤러를 정의합니다. 여기서 index
메서드는 사용자의 선호도(예: 노래 평가)에 따라 유사성을 계산합니다. ) 사용자 및 추천 노래를 검색하고 결과를 @recommendations
변수에 저장합니다. 🎜🎜4단계: 뷰 만들기🎜 마지막 단계는 추천곡을 표시하는 뷰를 만드는 것입니다. 다음은 간단한 보기 코드 예시입니다. 🎜rrreee🎜위 코드는 사용자에게 추천되는 노래 목록을 표시합니다. 🎜🎜요약: 🎜이 글에서는 MySQL과 Ruby on Rails를 사용하여 간단한 음악 추천 기능을 개발하는 단계를 소개합니다. 데이터베이스 생성 및 데이터 채우기부터 모델 관계 정의 및 권장 알고리즘 구현, 결과 표시를 위한 뷰 생성까지. 이 간단한 예가 독자들이 MySQL과 Ruby on Rails를 사용하여 음악 추천 기능을 개발하는 방법을 이해하는 데 도움이 되기를 바랍니다. 🎜위 내용은 MySQL과 Ruby on Rails를 사용하여 간단한 음악 추천 기능을 개발하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!