コード例 #1
0
ファイル: UserService.cs プロジェクト: SamirHabota/Watchables
        public List <Movie> RecommendedMovies(int userId)
        {
            var consumerList = _context.UsersMovies.Where(um => um.UserId == userId).Include(um => um.Movie).ToList();
            List <Model.Movie> usersMovies = new List <Movie>();

            foreach (var movie in consumerList)
            {
                usersMovies.Add(_mapper.Map <Model.Movie>(movie.Movie));
            }
            var allMovies = _mapper.Map <List <Model.Movie> >(_context.Movies.ToList());

            foreach (var item in usersMovies)
            {
                allMovies.RemoveAll(m => m.MovieId == item.MovieId);
            }
            List <ItemScore <Model.Movie> > allMoviesWithScore = new List <ItemScore <Movie> >();

            foreach (var movie in allMovies)
            {
                ItemScore <Model.Movie> newItem = new ItemScore <Movie>()
                {
                    Item  = movie,
                    Score = 0
                };
                allMoviesWithScore.Add(newItem);
            }

            foreach (var movie in allMoviesWithScore)
            {
                foreach (var usersMovie in usersMovies)
                {
                    movie.Score += _similarity.CalculateSimilarity(_wordBagGenerator.GenerateWordBag <Model.Movie>(movie.Item), _wordBagGenerator.GenerateWordBag <Model.Movie>(usersMovie));
                }
            }

            allMoviesWithScore.Sort((a, b) => b.Score.CompareTo(a.Score));
            List <Model.Movie> recommendedMovies = new List <Movie>();

            foreach (var movie in allMoviesWithScore)
            {
                recommendedMovies.Add(movie.Item);
            }

            return(recommendedMovies);
        }