Advertisement
Guest User

Untitled

a guest
Nov 18th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.02 KB | None | 0 0
  1. public Dictionary<long, double?> Recommend(int user, List<int> userFilms)
  2. {
  3. recommendations.Clear();
  4. List<int> list = new List<int>();
  5. foreach(var film in userFilms)
  6. {
  7. double? x;
  8. List<int> pomList = new List<int>();
  9. ratings.TryGetValue(film, out x);
  10. var searchResponse = client.Search<Ratings>(s => s.Query(q => q.Match(m => m.Field(f => f.MovieId).Query(film.ToString())) && q.Range(r => r.Field(fi => fi.Rating).GreaterThanOrEquals(x))).Size(size)
  11. .Aggregations(a => a
  12. .Terms("recommend", ts => ts
  13. .Field(o => o.MovieId).Size(size)
  14. .Aggregations(aa => aa
  15. .Terms("userId", sa => sa
  16. .Field(o => o.UserId)
  17. )
  18. )
  19. )
  20. )
  21. );
  22.  
  23. foreach(var doc in searchResponse.Documents)
  24. pomList.Add(doc.UserId);
  25.  
  26. if (pomList.Contains(user))
  27. pomList.ForEach(e => list.Add(e));
  28. }
  29.  
  30. list.Distinct<int>();
  31.  
  32. foreach (var rating in ratings)
  33. {
  34. var searchResponse = client.Search<Ratings>(s => s.Query(q => q.Match(m => m.Field(f => f.MovieId).Query(rating.Key.ToString())) && q.Range(r => r.Field(fi => fi.Rating).GreaterThanOrEquals(rating.Value))).Size(size));
  35. foreach (var doc in searchResponse.Documents)
  36. {
  37. if (list.Contains(doc.UserId) && !recommendations.ContainsKey(rating.Key) && !userFilms.Contains(doc.MovieId))
  38. recommendations.Add(doc.MovieId, rating.Value);
  39. }
  40. }
  41. recommendations = GetTop10(recommendations);
  42. return recommendations;
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement