###前提・実現したいこと
現在、Railsでお気に入りの商品を投稿しあうSNSの開発を行っています。
各投稿には何個かハッシュタグを付与することができます。(必須項目でないため、ハッシュタグが付かない投稿も許容)
以下が、モデルの状態です。
rb
1class Post < ActiveRecord::Base 2 belongs_to :user 3 has_many :hash_keys, through: :post_hash_keys 4end 5 6class PostHashKey < ActiveRecord::Base 7 belongs_to :hash_key 8 belongs_to :post 9end 10 11class HashKey < ActiveRecord::Base 12 has_many :post_hash_keys 13 has_many :posts, through: :post_hash_keys 14end 15 16class User < ActiveRecord::Base 17 has_many :posts 18end
実現したいこと
タイトルの通り、現在、各ユーザーに対して「あなたと似ている投稿をしているユーザーがいます」という風に
自分の投稿と、他のユーザーの投稿の類似度の高いユーザーを投稿に紐付いているハッシュタグから算出して、
ユーザーにフォローのレコメンドを実現したいです。
今考えていること
直近の対象のユーザーの投稿を数件取得して、最新の紐づくハッシュタグを3件取得し、
この3つのハッシュタグが部分的にも紐づく投稿を取得し、その類似度が高いユーザー順に
対象ユーザーにレコメンドしてあげたいと考えています。
しかし、具体的に3つのハッシュタグが部分的にも一致する投稿を取得するクエリの見当がついていない状況であり、
問題を細かく砕ききれていないのかとも思っています。
また、比較的大きな処理になるため、リクエストのたびに算出するコストは高いと推測しています。
これを解決するために、レコメンド用のモデルを用意し、一日に数回のバッチ処理で更新するという手段を取るべきか、なども検討しています。
技術的にまだ未熟なところがあり、質問させていただいた次第です。
何か、一部分に対するご助言やご教示をいただけますと幸いです。
よろしくお願いいたします!
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。