Ich versuche, ein grundlegendes kollaboratives Filterempfehlungssystem mit MySQL zu erstellen. Ich habe eine Tabelle User-Bewertung wie folgt aus:Zurückgeben von Zeilen mit einem anderen Benutzer in SQL gemeinsam (Collaborative Filtering)
user_id movie_id rating
1 131 342 3 <<< User 131 has rated movie 342
2 131 312 5 <<< and also 312
3 122 312 4
4 213 342 5
5 141 342 5 <<< User 141 has rated 342
6 141 312 4 <<< and also 312 (2 movies in common)
7 141 323 3
So ähnliche Benutzer Ich versuche, 131. ich die Benutzer zurückkehren wollen zu finden, die mindestens zwei Filme gemeinsam haben und die Bewertungen sind oben 3. So Es sollte Zeilen 5 und 6 (wie oben gezeigt) zurückgeben.
Dies ist, was ich bisher:
SELECT * from user_ratings
WHERE rating >= 3
AND movie_id IN (SELECT movie_id from user_rating WHERE user_id = 131)
AND user_id != 131
Das gibt:
user_id movie_id rating
3 122 312 4 <<< Don't want these two
4 213 342 5 <<<
5 141 342 5
6 141 312 4
Es Filme gibt, die Benutzer mit 131 gemeinsam haben, aber ich brauche es nur um die Benutzer zu zeigen, die mindestens zwei Elemente gemeinsam haben. Wie könnte ich das tun? Ich bin nicht sicher, wie es weitergehen :(
Danke, genau das, was ich gesucht habe! –