Ejemplo n.º 1
0
        private TasteRecommend GetRecommendationBaseOnInitialSelection(string userId, string initialType)
        {
            switch (initialType)
            {
            case "genre":
                try
                {
                    var genreRecommendations = new TasteRecommend();
                    var genrePoints          = this.cassandraConnector.getMapper()
                                               .SingleOrDefault <InitProfileGenre>("WHERE uid = ?", userId)
                                               .profile
                                               .ToArray();
                    var firstGenreIndex = 0;
                    for (int i = 0; i < genrePoints.Length; i++)
                    {
                        if (genrePoints[i] > 0)
                        {
                            firstGenreIndex = i;
                            break;
                        }
                    }
                    var firstGenre = this.cassandraConnector.getMapper()
                                     .SingleOrDefault <Genre>("WHERE idx=?", firstGenreIndex)
                                     .name;

                    genreRecommendations.uid             = userId;
                    genreRecommendations.recommendType   = initialType;
                    genreRecommendations.recommendations = this.cassandraConnector.getMapper()
                                                           .Fetch <Song>("WHERE genre=? LIMIT ?", firstGenre, 10)
                                                           .ToList();
                    return(genreRecommendations);
                }
                catch (System.Exception)
                {
                    return(null);
                }

            case "artist":
                try
                {
                    var artistRecommendations = new TasteRecommend();
                    var artistPoints          = this.cassandraConnector.getMapper()
                                                .SingleOrDefault <InitProfileArtist>("WHERE uid = ?", userId)
                                                .profile
                                                .ToArray();
                    var firstArtistIndex = 0;
                    for (int i = 0; i < artistPoints.Length; i++)
                    {
                        if (artistPoints[i] > 0)
                        {
                            firstArtistIndex = i;
                            break;
                        }
                    }
                    var firstArtist = this.cassandraConnector.getMapper()
                                      .SingleOrDefault <Artist>("WHERE idx=?", firstArtistIndex)
                                      .name;

                    artistRecommendations.uid             = userId;
                    artistRecommendations.recommendType   = initialType;
                    artistRecommendations.recommendations = this.cassandraConnector.getMapper()
                                                            .Fetch <Song>("WHERE artist=? LIMIT ?", firstArtist, 10)
                                                            .ToList();
                    return(artistRecommendations);
                }
                catch (System.Exception)
                {
                    return(null);
                }

            case "composer":

                try
                {
                    var composerRecommendations = new TasteRecommend();
                    var composerPoints          = this.cassandraConnector.getMapper()
                                                  .SingleOrDefault <InitProfileComposer>("WHERE uid = ?", userId)
                                                  .profile
                                                  .ToArray();
                    var firstComposerIndex = 0;
                    for (int i = 0; i < composerPoints.Length; i++)
                    {
                        if (composerPoints[i] > 0)
                        {
                            firstComposerIndex = i;
                            break;
                        }
                    }
                    var firstComposer = this.cassandraConnector.getMapper()
                                        .SingleOrDefault <Composer>("WHERE idx=?", firstComposerIndex)
                                        .name;

                    composerRecommendations.uid             = userId;
                    composerRecommendations.recommendType   = initialType;
                    composerRecommendations.recommendations = this.cassandraConnector.getMapper()
                                                              .Fetch <Song>("WHERE composer=? LIMIT ?", firstComposer, 10)
                                                              .ToList();
                    return(composerRecommendations);
                }
                catch (System.Exception)
                {
                    return(null);
                }

            default:
                return(null);
            }
        }
Ejemplo n.º 2
0
        private TasteRecommend GetRecommendationsBaseOnTaste(string userId, string tasteType, int numberOfRecommendationPerEvent)
        {
            List <string> songIds = new List <string>();

            switch (tasteType)
            {
            case "genre":
                try
                {
                    var genreRecommendations = new TasteRecommend();
                    songIds = this.cassandraConnector.getMapper()
                              .SingleOrDefault <RecommendationByGenre>("WHERE uid = ?", userId)
                              .recommendations;
                    genreRecommendations.uid             = userId;
                    genreRecommendations.recommendType   = tasteType;
                    genreRecommendations.recommendations = this.cassandraConnector.getMapper()
                                                           .Fetch <Song>("WHERE sid IN ? LIMIT ?", songIds, numberOfRecommendationPerEvent)
                                                           .ToList();
                    return(genreRecommendations);
                }
                catch (System.Exception)
                {
                    return(null);
                }

            case "artist":
                try
                {
                    var artistRecommendations = new TasteRecommend();
                    songIds = this.cassandraConnector.getMapper()
                              .SingleOrDefault <RecommendationByArtist>("WHERE uid = ?", userId)
                              .recommendations;

                    artistRecommendations.uid             = userId;
                    artistRecommendations.recommendType   = tasteType;
                    artistRecommendations.recommendations = this.cassandraConnector.getMapper()
                                                            .Fetch <Song>("WHERE sid IN ? LIMIT ?", songIds, numberOfRecommendationPerEvent)
                                                            .ToList();
                    return(artistRecommendations);
                }
                catch (System.Exception)
                {
                    return(null);
                }

            case "composer":
                try
                {
                    var composerRecommendations = new TasteRecommend();
                    songIds = this.cassandraConnector.getMapper()
                              .SingleOrDefault <RecommendationByComposer>("WHERE uid = ?", userId)
                              .recommendations;

                    composerRecommendations.uid             = userId;
                    composerRecommendations.recommendType   = tasteType;
                    composerRecommendations.recommendations = this.cassandraConnector.getMapper()
                                                              .Fetch <Song>("WHERE sid IN ? LIMIT ?", songIds, numberOfRecommendationPerEvent)
                                                              .ToList();
                    return(composerRecommendations);
                }
                catch (System.Exception)
                {
                    return(null);
                }

            default:
                return(null);
            }
        }