Systèmes de recommandation d'événements
Conception d'entreprise
- Concevoir un système de recommandation d'événements basé sur la personnalisation pour la recherche d'événements.
Instructions générales
- Concevoir un service Web avec
RESTful APIs
en Java pour gérer les requêtes et les réponses HTTP - Frontend : une page Web interactive avec la technologie
AJAX
implémentée avec HTML
, CSS
et JavaScript
. Le site Web de recommandation d'événements réalise trois fonctions principales :- Rechercher des événements autour des utilisateurs
- Événements favoris qu'ils aiment et suppriment également les événements qu'ils n'aiment plus
- Obtenez des recommandations d'événements aux alentours en fonction de leur histoire préférée et de la distance jusqu'au lieu où les événements auront lieu
- Backend : utilisez
Java
pour traiter la demande logique, et certains supports sont les suivants :- Construit avec à la fois une base de données relationnelle et une base de données NoSQL (
MySQL
et MongoDB
) pour prendre en charge le stockage des données des utilisateurs et des éléments recherchés dans l'API TicketMaster. - Concevoir un algorithme de recommandation basé sur le contenu pour la recommandation d'événements
- Déployer un serveur de site Web sur
Amazon EC2
: Système de recommandation d'événements - Analysez le trafic du site Web en ligne et hors ligne avec ELK (
ElasticSearch
, Logstash
et Kibana
) et MapReduce
dans MongoDB
Conception des infrastructures
- Architecture à 3 niveaux
- Niveau de présentation : HTML, CSS, JavaScript
- Niveau de données : MySQL, MongoDB
- Niveau logique : Java
- Environnement de développement local et distant
Environnement de développement local
Environnement de développement à distance
Conception d'API
- Niveau logique (servlet Java vers RPC)
- Recherche
- éléments de recherche
- API Ticketmaster
- analyser et nettoyer les données, saveItems
- réponse de retour
- Histoire
- obtenir, définir, supprimer les éléments favoris
- base de données de requête
- réponse de retour
- Recommandation
- recommanderArticles
- obtenir l'historique favori
- rechercher des événements similaires, trier
- réponse de retour
- Se connecter
- GET : vérifie si la session est connectée
- POST : vérifiez le nom d'utilisateur et le mot de passe, définissez la durée de la session et marquez comme connecté
- interroger la base de données pour vérifier
- réponse de retour
- Déconnexion
- GET : invalide la session si elle existe et redirige vers
index.html
- POST : identique à GET
- réponse de retour
- Registre
- Définir un nouvel utilisateur dans la table/collection des utilisateurs dans la base de données
- réponse de retour
Conception d'API au niveau logique
- Document officiel TicketMasterAPI - API de découverte
- Conception d'algorithmes de recommandation
- Recommandation basée sur le contenu : recherchez des catégories à partir du profil d'élément parmi les favoris d'un utilisateur et recommandez des éléments similaires avec les mêmes catégories.
- Présenter les articles recommandés avec un classement en fonction de la distance (géolocalisation des utilisateurs)
Processus de demande de recommandation
Conception de base de données
- MySQL
- utilisateurs - stocke les informations sur les utilisateurs.
- items - stocke les informations sur les articles.
- catégorie - relation article-catégorie du magasin
- historique - stocke l'historique des favoris de l'utilisateur
Conception de base de données MySQL
- MongoDB
- utilisateurs - stocke les informations sur les utilisateurs et l'historique des favoris. = (utilisateurs + historique)
- items - stocke les informations sur les articles et la relation article-catégorie. = (articles + catégorie)
- journaux – stocke les informations du journal
Détails de mise en œuvre
- Modèle de conception
- Modèle de constructeur :
Item.java
- Lors de la conversion d'événements de TicketMasterAPI en éléments Java, utilisez le modèle de générateur pour ajouter librement des champs.
- Modèle d'usine :
ExternalAPIFactory.java
, DBConnectionFactory.java
-
ExternalAPIFactory.java
: prend en charge plusieurs fonctions telles que la recommandation d'un événement, d'un restaurant, d'actualités, d'emplois… il suffit de créer un lien vers différentes API publiques comme TicketMasterAPI. Améliorer la capacité d'extension. -
DBConnectionFactory.java
: prend en charge plusieurs bases de données comme MySQL et MongoDB. Améliorer la capacité d'extension.
- Modèle Singleton :
MySQLConnection.java
, MongoDBConnection.java
- Créez uniquement un nombre spécifique d'instances de base de données, et la classe peut contrôler l'instance elle-même et donner l'accès global à la classe externe
Analyse du comportement des utilisateurs
- En ligne ( ElasticSearch , Logstash , Kibana )
- Utilisez Logstash pour récupérer le journal (sous une forme de type NoSQL), puis stockez les données dans ElasticSearch, enfin utilisez Kibana pour analyser les données dans ElasticSearch, en obtenant des tableaux et des graphiques comme l'utilisation des API, l'état des demandes, la géolocalisation des visiteurs, etc.
Environnement de développement à distance
- Hors ligne ( MapReduce dans MongoDB )
- Copiez-collez certains journaux du serveur Tomcat
- Purifier les données du journal et les stocker dans MongoDB
- Faire
mapreduce()
dans MongoDB - Obtenez une liste du nombre de timebuckets par ordre décroissant, puis recherchez l'heure de pointe du trafic du site Web.