Ich möchte für eine Newsseite ein Empfehlungs-System (Recommendation Engine) aufbauen. Das Ganze soll so funktionieren:
1) Ein Nutzer bewertet einen Artikel entweder als gut oder als schlecht.
2) Wenn die Bewertung gut ist, dann wird die Verknüpfung zwischen den Themen des Artikels und dem Nutzer in der Datenbank verstärkt.
Wenn ein User dann personalisierte News abrufen möchte, soll das so funktionieren:
1) Das Script holt sich alle Themen mit den Bewertungen des Nutzers aus der DB.
2) ...
Wie würdet ihr das System in PHP mit MySQL realisieren? Ich würde diese DB-Struktur nehmen. Aber gibt es vielleicht noch eine bessere?
User | Thema | Bewertung
User+Thema = Unique
Wenn ein Nutzer einen Artikel als gut bewertet, werden alle Themen des Textes in der DB mit dem User verknüpft, z.B.
"INSERT INTO interessen (user, thema, bewertung) VALUES ('abc', 'US-Wahl', '1') ON DUPLICATE KEY UPDATE bewertung = bewertung+1"
Dann könnte ein Datensatz für einen User später so aussehen:
US-Wahl: 84
KfW: 33
Sport: 124
Dallas Mavericks: 7
Um die News zu personalisieren, würde ich dann alle Interessen auslesen. Wie würdet ihr die Daten aber auf die Nachrichten in der DB anwenden?
Meine Idee war: Die ersten 150 News aus der DB auslesen. Wenn US-Wahl als Thema vorhanden, dann Rank = Rank + 84, wenn KfW enthalten, dann Rank = Rank + 33 usw.
So hätte die Nachricht mit den meisten enthaltenen Themen, die interessant sind, den höchsten Rang. Man müsste aber immer sehr viele News und alle Interessen auslesen. Gibt es da nicht einen besseren Weg?
Gibt es vielleicht gute Algorithmen, die man für dieses Problem nutzen könnte?
Ich hoffe, ihr könnt mir helfen.