From cc23495591d106dc59569c292cd3ddab752c97c3 Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Sun, 29 Sep 2019 15:03:30 +1000 Subject: [PATCH] Update Program plugin with new code --- Plugins/Wox.Plugin.Program/Programs/UWP.cs | 4 ++-- Plugins/Wox.Plugin.Program/Programs/Win32.cs | 6 +++--- Wox.Infrastructure/StringMatcher.cs | 21 +++++++++++++++----- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/Plugins/Wox.Plugin.Program/Programs/UWP.cs b/Plugins/Wox.Plugin.Program/Programs/UWP.cs index bad8fece95..d5f72683f0 100644 --- a/Plugins/Wox.Plugin.Program/Programs/UWP.cs +++ b/Plugins/Wox.Plugin.Program/Programs/UWP.cs @@ -240,9 +240,9 @@ namespace Wox.Plugin.Program.Programs private int Score(string query) { - var score1 = StringMatcher.Score(DisplayName, query); + var score1 = StringMatcher.FuzzySearch(query, DisplayName).ScoreAfterSearchPrecisionFilter(); var score2 = StringMatcher.ScoreForPinyin(DisplayName, query); - var score3 = StringMatcher.Score(Description, query); + var score3 = StringMatcher.FuzzySearch(query, Description).ScoreAfterSearchPrecisionFilter(); var score4 = StringMatcher.ScoreForPinyin(Description, query); var score = new[] { score1, score2, score3, score4 }.Max(); return score; diff --git a/Plugins/Wox.Plugin.Program/Programs/Win32.cs b/Plugins/Wox.Plugin.Program/Programs/Win32.cs index 6ac53fa922..7b9b3a52f5 100644 --- a/Plugins/Wox.Plugin.Program/Programs/Win32.cs +++ b/Plugins/Wox.Plugin.Program/Programs/Win32.cs @@ -31,11 +31,11 @@ namespace Wox.Plugin.Program.Programs private int Score(string query) { - var score1 = StringMatcher.Score(Name, query); + var score1 = StringMatcher.FuzzySearch(query, Name).ScoreAfterSearchPrecisionFilter(); var score2 = StringMatcher.ScoreForPinyin(Name, query); - var score3 = StringMatcher.Score(Description, query); + var score3 = StringMatcher.FuzzySearch(query, Description).ScoreAfterSearchPrecisionFilter(); var score4 = StringMatcher.ScoreForPinyin(Description, query); - var score5 = StringMatcher.Score(ExecutableName, query); + var score5 = StringMatcher.FuzzySearch(query, ExecutableName).ScoreAfterSearchPrecisionFilter(); var score = new[] { score1, score2, score3, score4, score5 }.Max(); return score; } diff --git a/Wox.Infrastructure/StringMatcher.cs b/Wox.Infrastructure/StringMatcher.cs index 7380278e7d..e0fc1c39a5 100644 --- a/Wox.Infrastructure/StringMatcher.cs +++ b/Wox.Infrastructure/StringMatcher.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Linq; using System.Text; using Wox.Infrastructure.Logger; @@ -29,11 +29,9 @@ namespace Wox.Infrastructure return FuzzySearch(target, source, new MatchOption()).Score > 0; } - public enum SearchPrecisionScore + public static MatchResult FuzzySearch(string query, string stringToCompare) { - Regular = 50, - Low = 20, - None = 0 + return FuzzySearch(query, stringToCompare, new MatchOption()); } /// @@ -107,6 +105,13 @@ namespace Wox.Infrastructure return score; } + public enum SearchPrecisionScore + { + Regular = 50, + Low = 20, + None = 0 + } + public static bool IsSearchPrecisionScoreMet(this MatchResult matchResult) { var precisionScore = (SearchPrecisionScore)Enum.Parse(typeof(SearchPrecisionScore), @@ -114,6 +119,12 @@ namespace Wox.Infrastructure return matchResult.Score >= (int)precisionScore; } + public static int ScoreAfterSearchPrecisionFilter(this MatchResult matchResult) + { + return matchResult.IsSearchPrecisionScoreMet() ? matchResult.Score : 0; + + } + public static int ScoreForPinyin(string source, string target) { if (!string.IsNullOrEmpty(source) && !string.IsNullOrEmpty(target))