2021-01-26 07:01:39 +00:00
|
|
|
|
using System.Collections.Generic;
|
2021-01-08 07:52:45 +00:00
|
|
|
|
|
2021-01-26 07:01:39 +00:00
|
|
|
|
namespace Flow.Launcher.Plugin.SharedModels
|
2021-01-08 07:52:45 +00:00
|
|
|
|
{
|
2025-02-24 07:37:13 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Represents the result of a match operation.
|
|
|
|
|
|
/// </summary>
|
2021-01-08 07:52:45 +00:00
|
|
|
|
public class MatchResult
|
|
|
|
|
|
{
|
2025-02-24 07:37:13 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Initializes a new instance of the <see cref="MatchResult"/> class.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="success"></param>
|
|
|
|
|
|
/// <param name="searchPrecision"></param>
|
2021-01-08 07:52:45 +00:00
|
|
|
|
public MatchResult(bool success, SearchPrecisionScore searchPrecision)
|
|
|
|
|
|
{
|
|
|
|
|
|
Success = success;
|
|
|
|
|
|
SearchPrecision = searchPrecision;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-02-24 07:37:13 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Initializes a new instance of the <see cref="MatchResult"/> class.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="success"></param>
|
|
|
|
|
|
/// <param name="searchPrecision"></param>
|
|
|
|
|
|
/// <param name="matchData"></param>
|
|
|
|
|
|
/// <param name="rawScore"></param>
|
2021-01-08 07:52:45 +00:00
|
|
|
|
public MatchResult(bool success, SearchPrecisionScore searchPrecision, List<int> matchData, int rawScore)
|
|
|
|
|
|
{
|
|
|
|
|
|
Success = success;
|
|
|
|
|
|
SearchPrecision = searchPrecision;
|
|
|
|
|
|
MatchData = matchData;
|
|
|
|
|
|
RawScore = rawScore;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-02-24 07:37:13 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Whether the match operation was successful.
|
|
|
|
|
|
/// </summary>
|
2021-01-08 07:52:45 +00:00
|
|
|
|
public bool Success { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// The final score of the match result with search precision filters applied.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public int Score { get; private set; }
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// The raw calculated search score without any search precision filtering applied.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
private int _rawScore;
|
|
|
|
|
|
|
2025-02-24 07:37:13 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// The raw calculated search score without any search precision filtering applied.
|
|
|
|
|
|
/// </summary>
|
2021-01-08 07:52:45 +00:00
|
|
|
|
public int RawScore
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return _rawScore; }
|
|
|
|
|
|
set
|
|
|
|
|
|
{
|
|
|
|
|
|
_rawScore = value;
|
|
|
|
|
|
Score = ScoreAfterSearchPrecisionFilter(_rawScore);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Matched data to highlight.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public List<int> MatchData { get; set; }
|
|
|
|
|
|
|
2025-02-24 07:37:13 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// The search precision score used to filter the search results.
|
|
|
|
|
|
/// </summary>
|
2021-01-08 07:52:45 +00:00
|
|
|
|
public SearchPrecisionScore SearchPrecision { get; set; }
|
|
|
|
|
|
|
2025-02-24 07:37:13 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Determines if the search precision score is met.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <returns></returns>
|
2021-01-08 07:52:45 +00:00
|
|
|
|
public bool IsSearchPrecisionScoreMet()
|
|
|
|
|
|
{
|
|
|
|
|
|
return IsSearchPrecisionScoreMet(_rawScore);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private bool IsSearchPrecisionScoreMet(int rawScore)
|
|
|
|
|
|
{
|
|
|
|
|
|
return rawScore >= (int)SearchPrecision;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private int ScoreAfterSearchPrecisionFilter(int rawScore)
|
|
|
|
|
|
{
|
|
|
|
|
|
return IsSearchPrecisionScoreMet(rawScore) ? rawScore : 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-02-24 07:37:13 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Represents the search precision score used to filter search results.
|
|
|
|
|
|
/// </summary>
|
2021-01-08 07:52:45 +00:00
|
|
|
|
public enum SearchPrecisionScore
|
|
|
|
|
|
{
|
2025-02-24 07:37:13 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// The highest search precision score.
|
|
|
|
|
|
/// </summary>
|
2021-01-08 07:52:45 +00:00
|
|
|
|
Regular = 50,
|
2025-02-24 07:37:13 +00:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// The medium search precision score.
|
|
|
|
|
|
/// </summary>
|
2021-01-08 07:52:45 +00:00
|
|
|
|
Low = 20,
|
2025-02-24 07:37:13 +00:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// The lowest search precision score.
|
|
|
|
|
|
/// </summary>
|
2021-01-08 07:52:45 +00:00
|
|
|
|
None = 0
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|