From 3776aa3f4ef693c5554008e68fcd0daa93e02b43 Mon Sep 17 00:00:00 2001 From: Rok Rejc Date: Sat, 20 Jun 2026 06:33:42 +0200 Subject: [PATCH] Enable wildcard search in terms list (missing file). --- .../WildcardLemmatizationService.cs | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/core/Rsdo.Concordancer.Services/Services/LemmatizationService/WildcardLemmatizationService.cs diff --git a/src/core/Rsdo.Concordancer.Services/Services/LemmatizationService/WildcardLemmatizationService.cs b/src/core/Rsdo.Concordancer.Services/Services/LemmatizationService/WildcardLemmatizationService.cs new file mode 100644 index 0000000..85fa43c --- /dev/null +++ b/src/core/Rsdo.Concordancer.Services/Services/LemmatizationService/WildcardLemmatizationService.cs @@ -0,0 +1,38 @@ +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.EntityFrameworkCore; +using Rsdo.Concordancer.Core.Extensions; +using Rsdo.Concordancer.Services.Framework.DbContext; + +namespace Rsdo.Concordancer.Services.Services.LemmatizationService; + +public class WildcardLemmatizationService : SimpleLemmatizationService +{ + private readonly MasterDbContext dbContext; + + public WildcardLemmatizationService(MasterDbContext dbContext) + : base(dbContext) + { + this.dbContext = dbContext; + } + + public override async Task> GetLemmas(string form) + { + if (!form.IsWildcardSearch()) + { + return await base.GetLemmas(form); + } + + var lemmas = await dbContext.LemmaFormPair.Where(f => EF.Functions.Like(f.Form.ToLower(), form.Replace("*", "%").Replace("?", "_").ToLower())) + .Select(f => f.Lemma) + .Distinct() + .ToListAsync(); + if (lemmas.IsNullOrEmpty()) + { + lemmas.Add(form); + } + + return lemmas; + } +} \ No newline at end of file