From 1a894ac5833c69d6f8146235e721639a7908fd44 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Tue, 9 Apr 2024 18:07:14 +0300 Subject: [PATCH] Fixed: Matching at least 2 terms in the filter releases by query --- src/NzbDrone.Core/Indexers/IndexerBase.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/NzbDrone.Core/Indexers/IndexerBase.cs b/src/NzbDrone.Core/Indexers/IndexerBase.cs index 5acbba5dd..1caed03b3 100644 --- a/src/NzbDrone.Core/Indexers/IndexerBase.cs +++ b/src/NzbDrone.Core/Indexers/IndexerBase.cs @@ -171,10 +171,15 @@ namespace NzbDrone.Core.Indexers var splitRegex = new Regex("[^\\w]+"); // split search term to individual terms for less aggressive filtering, filter common terms - var terms = splitRegex.Split(searchCriteria.SearchTerm).Where(t => t.IsNotNullOrWhiteSpace() && t.Length > 1 && !commonWords.ContainsIgnoreCase(t)); + var terms = splitRegex.Split(searchCriteria.SearchTerm).Where(t => t.IsNotNullOrWhiteSpace() && t.Length > 1 && !commonWords.ContainsIgnoreCase(t)).ToArray(); // check in title and description for any term searched for - releases = releases.Where(r => terms.Any(t => (r.Title.IsNotNullOrWhiteSpace() && r.Title.ContainsIgnoreCase(t)) || (r.Description.IsNotNullOrWhiteSpace() && r.Description.ContainsIgnoreCase(t)))).ToList(); + releases = releases.Where(r => + { + var matches = terms.Where(t => (r.Title.IsNotNullOrWhiteSpace() && r.Title.ContainsIgnoreCase(t)) || (r.Description.IsNotNullOrWhiteSpace() && r.Description.ContainsIgnoreCase(t))); + + return terms.Length > 1 ? matches.Skip(1).Any() : matches.Any(); + }).ToList(); } return releases;