diff --git a/Elwig/Helpers/Utils.cs b/Elwig/Helpers/Utils.cs index 65bf710..0352c43 100644 --- a/Elwig/Helpers/Utils.cs +++ b/Elwig/Helpers/Utils.cs @@ -191,16 +191,21 @@ namespace Elwig.Helpers { .Select(w => { w = w?.ToLower(); var p = w?.ToLower()?.Split(" "); - if (w == null || p == null) { + if (w == null || p == null) return 0; - } else if (searchKeywords.Any(f => w == f)) { - return 100; - } else if (searchKeywords.Any(f => p.Any(a => a == f))) { - return 90; - } else if (searchKeywords.Any(f => p.Any(a => a.StartsWith(f)))) { - return 50; - } else if (searchKeywords.Any(f => f != null && w.Contains(f))) { - return 1; + + var t1 = searchKeywords.Where(f => w == f).Select(f => f.Length).OrderDescending().FirstOrDefault(0); + var t2 = searchKeywords.Where(f => p.Any(a => a == f)).Select(f => f.Length).OrderDescending().FirstOrDefault(0); + var t3 = searchKeywords.Where(f => p.Any(a => a.StartsWith(f))).Select(f => f.Length).OrderDescending().FirstOrDefault(0); + var t4 = searchKeywords.Where(f => w.Contains(f)).Select(f => f.Length).OrderDescending().FirstOrDefault(0); + if (t1 > 0) { + return 4 + t1; + } else if (t2 > 0) { + return 3 + t2; + } else if (t3 > 0) { + return 2 + t3; + } else if (t4 > 0) { + return 1 + t4; } else { return 0; }