Event-Empfehlungssysteme
Geschäftsdesign
- Entwurf eines auf Personalisierung basierenden Event-Empfehlungssystems für die Event-Suche.
Allgemeine Anleitung
- Entwerfen Sie einen Webdienst mit
RESTful APIs in Java, um HTTP-Anfragen und -Antworten zu verarbeiten - Frontend: eine interaktive Webseite mit
AJAX -Technologie, implementiert mit HTML , CSS und JavaScript . Die Event-Empfehlungs-Website erfüllt drei Hauptfunktionen:- Suchen Sie nach Ereignissen rund um Benutzer
- Sie können Ereignisse, die ihnen gefallen, zu ihren Favoriten hinzufügen und auch Ereignisse löschen, die ihnen nicht mehr gefallen
- Erhalten Sie Empfehlungen zu Veranstaltungen in der Umgebung, basierend auf ihrer Lieblingsgeschichte und der Entfernung zum Veranstaltungsort
- Backend: Verwenden Sie
Java , um Logikanforderungen zu verarbeiten. Einige Unterstützungen sind wie folgt:- Gebaut mit einer relationalen Datenbank und einer NoSQL-Datenbank (
MySQL und MongoDB ), um die Datenspeicherung von Benutzern und Elementen zu unterstützen, die in der TicketMaster-API gesucht werden - Entwerfen Sie einen inhaltsbasierten Empfehlungsalgorithmus für die Veranstaltungsempfehlung
- Stellen Sie einen Website-Server auf
Amazon EC2 bereit: Event Recommendation System - Analysieren Sie den Website-Verkehr sowohl online als auch offline mit ELK (
ElasticSearch , Logstash und Kibana ) und MapReduce in MongoDB
Infrastrukturdesign
- 3-stufige Architektur
- Präsentationsebene: HTML, CSS, JavaScript
- Datenebene: MySQL, MongoDB
- Logikebene: Java
- Lokale und Remote-Entwicklungsumgebung
Lokale Entwicklungsumgebung
Remote-Entwicklungsumgebung
API-Design
- Logikschicht (Java Servlet zu RPC)
- Suchen
- searchItems
- Ticketmaster-API
- Daten analysieren und bereinigen, saveItems
- Antwort zurückgeben
- Geschichte
- Lieblingselemente abrufen, festlegen und löschen
- Datenbank abfragen
- Antwort zurückgeben
- Empfehlung
- empfehlenArtikel
- Holen Sie sich Ihre Lieblingsgeschichte
- Suche nach ähnlichen Ereignissen, Sortieren
- Antwort zurückgeben
- Login
- GET: Überprüfen Sie, ob die Sitzung angemeldet ist
- POST: Überprüfen Sie den Benutzernamen und das Passwort, legen Sie die Sitzungszeit fest und markieren Sie ihn als angemeldet
- Datenbank zur Überprüfung abfragen
- Antwort zurückgeben
- Abmelden
- GET: Die Sitzung ungültig machen, falls vorhanden, und zu
index.html umleiten - POST: das Gleiche wie GET
- Antwort zurückgeben
- Registrieren
- Legen Sie einen neuen Benutzer in der Benutzertabelle/-sammlung in der Datenbank fest
- Antwort zurückgeben
API-Design in Logikebene
- Offizielles TicketMasterAPI-Dokument – Discovery API
- Entwurf von Empfehlungsalgorithmen
- Inhaltsbasierte Empfehlung : Finden Sie Kategorien aus dem Artikelprofil der Favoriten eines Benutzers und empfehlen Sie ähnliche Artikel mit denselben Kategorien.
- Präsentieren Sie empfohlene Artikel mit einer Rangfolge basierend auf der Entfernung (Geolokalisierung der Benutzer).
Prozess der Empfehlungsanfrage
Datenbankdesign
- MySQL
- Benutzer – Benutzerinformationen speichern.
- Artikel – Artikelinformationen speichern.
- Kategorie – Artikel-Kategorie-Beziehung speichern
- Verlauf – Speichern Sie den Favoritenverlauf des Benutzers
MySQL-Datenbankdesign
- MongoDB
- Benutzer – Speichern Sie Benutzerinformationen und den Favoritenverlauf. = (Benutzer + Verlauf)
- Artikel – Artikelinformationen und Artikel-Kategorie-Beziehung speichern. = (Artikel + Kategorie)
- Protokolle – Protokollinformationen speichern
Implementierungsdetails
- Designmuster
- Builder-Muster :
Item.java- Wenn Sie Ereignisse von TicketMasterAPI in Java-Elemente konvertieren, verwenden Sie das Builder-Muster, um Felder frei hinzuzufügen.
- Fabrikmuster :
ExternalAPIFactory.java , DBConnectionFactory.java-
ExternalAPIFactory.java : Unterstützt mehrere Funktionen wie die Empfehlung von Veranstaltungen, Restaurants, Nachrichten, Jobs … einfach eine Verknüpfung zu verschiedenen öffentlichen APIs wie TicketMasterAPI herstellen. Erweiterungsfähigkeit verbessern. -
DBConnectionFactory.java : Unterstützt mehrere Datenbanken wie MySQL und MongoDB. Erweiterungsfähigkeit verbessern.
- Singleton-Muster :
MySQLConnection.java , MongoDBConnection.java- Erstellen Sie nur eine bestimmte Anzahl von Datenbankinstanzen, und die Klasse kann die Instanz selbst steuern und der Außenklasse globalen Zugriff gewähren
Analyse des Benutzerverhaltens
- Online ( ElasticSearch , Logstash , Kibana )
- Verwenden Sie Logstash, um Protokolle abzurufen (in NoSQL-ähnlicher Form), speichern Sie dann Daten in ElasticSearch und verwenden Sie schließlich Kibana, um die Daten in ElasticSearch zu analysieren und einige Tabellen und Diagramme wie API-Nutzung, Anforderungsstatus, Geolokalisierung von Besuchern usw. abzurufen
Remote-Entwicklungsumgebung
- Offline ( MapReduce in MongoDB )
- Kopieren Sie einige Protokolle vom Tomcat-Server und fügen Sie sie ein
- Protokolldaten bereinigen und in MongoDB speichern
- Führen Sie
mapreduce() in MongoDB aus - Erhalten Sie eine Liste der Timebucket-Zählungen in absteigender Reihenfolge und ermitteln Sie dann die Spitzenzeit des Website-Verkehrs