Browse Source

use a dictionary for lookups when determining similar items

Luke Pulverenti 12 năm trước cách đây
mục cha
commit
69847b84e7
1 tập tin đã thay đổi với 4 bổ sung2 xóa
  1. 4 2
      MediaBrowser.Api/SimilarItemsHelper.cs

+ 4 - 2
MediaBrowser.Api/SimilarItemsHelper.cs

@@ -164,9 +164,11 @@ namespace MediaBrowser.Api
             // Find common studios
             points += item1.Studios.Where(i => item2.Studios.Contains(i, StringComparer.OrdinalIgnoreCase)).Sum(i => 3);
 
-            var item2PeopleNames = item2.People.Select(i => i.Name).ToList();
+            var item2PeopleNames = item2.People.Select(i => i.Name)
+                .Distinct(StringComparer.OrdinalIgnoreCase)
+                .ToDictionary(i => i, StringComparer.OrdinalIgnoreCase);
 
-            points += item1.People.Where(i => item2PeopleNames.Contains(i.Name, StringComparer.OrdinalIgnoreCase)).Sum(i =>
+            points += item1.People.Where(i => item2PeopleNames.ContainsKey(i.Name)).Sum(i =>
             {
                 if (string.Equals(i.Type, PersonType.Director, StringComparison.OrdinalIgnoreCase) || string.Equals(i.Role, PersonType.Director, StringComparison.OrdinalIgnoreCase))
                 {