aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations/Data/SqliteItemRepository.cs
diff options
context:
space:
mode:
authorClaus Vium <cvium@users.noreply.github.com>2023-07-03 08:51:46 +0200
committerGitHub <noreply@github.com>2023-07-03 08:51:46 +0200
commit10fde0a2c12b3992792ead68d27e621f4999a6b8 (patch)
tree8c854b82f9724b055774fef394a0760a6b19199d /Emby.Server.Implementations/Data/SqliteItemRepository.cs
parent52252fcd554a7ac1105374ca6d1b440787820f0a (diff)
parentf0376cdad9626f5ae0b41a5f54e765fc10dffa05 (diff)
Merge pull request #8914 from bradbeattie/augmented-tag-searching
Augment tag searching to consider individual ItemValues instead of the delimited tags field
Diffstat (limited to 'Emby.Server.Implementations/Data/SqliteItemRepository.cs')
-rw-r--r--Emby.Server.Implementations/Data/SqliteItemRepository.cs9
1 files changed, 8 insertions, 1 deletions
diff --git a/Emby.Server.Implementations/Data/SqliteItemRepository.cs b/Emby.Server.Implementations/Data/SqliteItemRepository.cs
index ca8f605a0..73ec856fc 100644
--- a/Emby.Server.Implementations/Data/SqliteItemRepository.cs
+++ b/Emby.Server.Implementations/Data/SqliteItemRepository.cs
@@ -2452,7 +2452,9 @@ namespace Emby.Server.Implementations.Data
if (query.SearchTerm.Length > 1)
{
builder.Append("+ ((CleanName like @SearchTermContains or (OriginalTitle not null and OriginalTitle like @SearchTermContains)) * 10)");
- builder.Append("+ ((Tags not null and Tags like @SearchTermContains) * 5)");
+ builder.Append("+ (SELECT COUNT(1) * 1 from ItemValues where ItemId=Guid and CleanValue like @SearchTermContains)");
+ builder.Append("+ (SELECT COUNT(1) * 2 from ItemValues where ItemId=Guid and CleanValue like @SearchTermStartsWith)");
+ builder.Append("+ (SELECT COUNT(1) * 10 from ItemValues where ItemId=Guid and CleanValue like @SearchTermEquals)");
}
builder.Append(") as SearchScore");
@@ -2483,6 +2485,11 @@ namespace Emby.Server.Implementations.Data
{
statement.TryBind("@SearchTermContains", "%" + searchTerm + "%");
}
+
+ if (commandText.Contains("@SearchTermEquals", StringComparison.OrdinalIgnoreCase))
+ {
+ statement.TryBind("@SearchTermEquals", searchTerm);
+ }
}
private void BindSimilarParams(InternalItemsQuery query, IStatement statement)