aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations/Library/SearchEngine.cs
diff options
context:
space:
mode:
authorLuke <luke.pulverenti@gmail.com>2017-11-01 15:56:42 -0400
committerGitHub <noreply@github.com>2017-11-01 15:56:42 -0400
commit5e879484e9f4604679af59633019b9ddf7a8903e (patch)
treea6427b153fa6be62e05bda521e912b512949e1e8 /Emby.Server.Implementations/Library/SearchEngine.cs
parent5d4c58ffc4631401660cd0418194fbe10e78ce4c (diff)
parentd765f370b35bdc8c74a6b74a82796efcea97f762 (diff)
Merge pull request #2994 from MediaBrowser/dev
Dev
Diffstat (limited to 'Emby.Server.Implementations/Library/SearchEngine.cs')
-rw-r--r--Emby.Server.Implementations/Library/SearchEngine.cs39
1 files changed, 30 insertions, 9 deletions
diff --git a/Emby.Server.Implementations/Library/SearchEngine.cs b/Emby.Server.Implementations/Library/SearchEngine.cs
index b1ed034ca..df21c1409 100644
--- a/Emby.Server.Implementations/Library/SearchEngine.cs
+++ b/Emby.Server.Implementations/Library/SearchEngine.cs
@@ -99,8 +99,6 @@ namespace Emby.Server.Implementations.Library
var terms = GetWords(searchTerm);
- var hints = new List<Tuple<BaseItem, string, int>>();
-
var excludeItemTypes = query.ExcludeItemTypes.ToList();
var includeItemTypes = (query.IncludeItemTypes ?? new string[] { }).ToList();
@@ -161,8 +159,15 @@ namespace Emby.Server.Implementations.Library
AddIfMissing(excludeItemTypes, typeof(CollectionFolder).Name);
AddIfMissing(excludeItemTypes, typeof(Folder).Name);
+ var mediaTypes = query.MediaTypes.ToList();
+
+ if (includeItemTypes.Count > 0)
+ {
+ excludeItemTypes.Clear();
+ mediaTypes.Clear();
+ }
- var mediaItems = _libraryManager.GetItemList(new InternalItemsQuery(user)
+ var searchQuery = new InternalItemsQuery(user)
{
NameContains = searchTerm,
ExcludeItemTypes = excludeItemTypes.ToArray(excludeItemTypes.Count),
@@ -178,7 +183,7 @@ namespace Emby.Server.Implementations.Library
IsNews = query.IsNews,
IsSeries = query.IsSeries,
IsSports = query.IsSports,
- MediaTypes = query.MediaTypes,
+ MediaTypes = mediaTypes.ToArray(),
DtoOptions = new DtoOptions
{
@@ -189,17 +194,33 @@ namespace Emby.Server.Implementations.Library
ItemFields.ChannelInfo
}
}
- });
+ };
+
+ List<BaseItem> mediaItems;
+
+ if (searchQuery.IncludeItemTypes.Length == 1 && string.Equals(searchQuery.IncludeItemTypes[0], "MusicArtist", StringComparison.OrdinalIgnoreCase))
+ {
+ if (searchQuery.ParentId.HasValue)
+ {
+ searchQuery.AncestorIds = new string[] { searchQuery.ParentId.Value.ToString("N") };
+ }
+ searchQuery.ParentId = null;
+ searchQuery.IncludeItemsByName = true;
+ searchQuery.IncludeItemTypes = new string[] { };
+ mediaItems = _libraryManager.GetArtists(searchQuery).Items.Select(i => i.Item1).ToList();
+ }
+ else
+ {
+ mediaItems = _libraryManager.GetItemList(searchQuery);
+ }
- // Add search hints based on item name
- hints.AddRange(mediaItems.Select(item =>
+ var returnValue = mediaItems.Select(item =>
{
var index = GetIndex(item.Name, searchTerm, terms);
return new Tuple<BaseItem, string, int>(item, index.Item1, index.Item2);
- }));
- var returnValue = hints.Where(i => i.Item3 >= 0).OrderBy(i => i.Item3).ThenBy(i => i.Item1.SortName).Select(i => new SearchHintInfo
+ }).OrderBy(i => i.Item3).ThenBy(i => i.Item1.SortName).Select(i => new SearchHintInfo
{
Item = i.Item1,
MatchedTerm = i.Item2