Skip to content

Commit bf579d1

Browse files
committed
Test fuzzy search
1 parent 9321089 commit bf579d1

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

Flow.Launcher.Plugin/SharedModels/MatchResult.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public MatchResult(bool success, SearchPrecisionScore searchPrecision, List<int>
4141
/// <summary>
4242
/// The final score of the match result with search precision filters applied.
4343
/// </summary>
44-
public int Score { get; private set; }
44+
public int Score { get; set; }
4545

4646
/// <summary>
4747
/// The raw calculated search score without any search precision filtering applied.

Plugins/Flow.Launcher.Plugin.Program/Programs/Win32.cs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,12 +91,26 @@ private static MatchResult Match(string query, IReadOnlyCollection<string> candi
9191
if (candidates.Count == 0)
9292
return null;
9393

94-
var match = candidates.Select(candidate => Main.Context.API.FuzzySearch(query, candidate))
94+
var match = candidates.Select(candidate =>
95+
{
96+
var matchResult = Main.Context.API.FuzzySearch(query, candidate);
97+
matchResult.Score = FuzzySearch(query, candidate);
98+
return matchResult;
99+
})
95100
.MaxBy(match => match.Score);
96101

97102
return match?.IsSearchPrecisionScoreMet() ?? false ? match : null;
98103
}
99104

105+
private static int FuzzySearch(string query, string stringToCompare)
106+
{
107+
var newScore = FuzzySharp.Fuzz.PartialTokenSetRatio(query.ToLower(), stringToCompare.ToLower());
108+
if (stringToCompare.Length < query.Length)
109+
newScore = 0;
110+
111+
return newScore;
112+
}
113+
100114
public Result Result(string query, IPublicAPI api)
101115
{
102116
string title;
@@ -112,13 +126,16 @@ public Result Result(string query, IPublicAPI api)
112126
{
113127
title = resultName;
114128
matchResult = Main.Context.API.FuzzySearch(query, resultName);
129+
matchResult.Score = FuzzySearch(query, resultName);
115130
}
116131
else
117132
{
118133
// Search in both
119134
title = $"{resultName}: {Description}";
120135
var nameMatch = Main.Context.API.FuzzySearch(query, resultName);
136+
nameMatch.Score = FuzzySearch(query, resultName);
121137
var descriptionMatch = Main.Context.API.FuzzySearch(query, Description);
138+
descriptionMatch.Score = FuzzySearch(query, Description);
122139
if (descriptionMatch.Score > nameMatch.Score)
123140
{
124141
for (int i = 0; i < descriptionMatch.MatchData.Count; i++)

0 commit comments

Comments
 (0)