ktsu.FuzzySearch
1.2.24
Prefix Reserved
dotnet add package ktsu.FuzzySearch --version 1.2.24
NuGet\Install-Package ktsu.FuzzySearch -Version 1.2.24
<PackageReference Include="ktsu.FuzzySearch" Version="1.2.24" />
<PackageVersion Include="ktsu.FuzzySearch" Version="1.2.24" />Directory.Packages.props
<PackageReference Include="ktsu.FuzzySearch" />Project file
paket add ktsu.FuzzySearch --version 1.2.24
#r "nuget: ktsu.FuzzySearch, 1.2.24"
#:package ktsu.FuzzySearch@1.2.24
#addin nuget:?package=ktsu.FuzzySearch&version=1.2.24Install as a Cake Addin
#tool nuget:?package=ktsu.FuzzySearch&version=1.2.24Install as a Cake Tool
ktsu.FuzzySearch
A lightweight .NET library that provides fuzzy string matching capabilities, allowing for approximate string matching with intelligent scoring.
License NuGet Version NuGet Version NuGet Downloads GitHub commit activity GitHub contributors GitHub Actions Workflow Status
Introduction
FuzzySearch is a .NET library that provides fuzzy string matching capabilities with intelligent scoring. It's perfect for implementing search-as-you-type features, command palettes, or any application requiring flexible string matching. This library offers both basic contains-style matching and more sophisticated algorithms that can rank multiple potential matches by relevance.
Features
- Fuzzy String Matching: Match strings even when they contain typos or missing characters
- Intelligent Scoring: Rank matches by quality with a smart scoring algorithm
- Case Insensitivity: Optional case-insensitive matching
- Filtering Collections: Filter lists of strings and rank results
- Customizable Parameters: Adjust matching behavior to suit different needs
- Lightweight: Minimal dependencies, focused on performance
- Well-tested: Comprehensive test suite ensuring reliability
Installation
Package Manager Console
Install-Package ktsu.FuzzySearch
.NET CLI
dotnet add package ktsu.FuzzySearch
Package Reference
<PackageReference Include="ktsu.FuzzySearch" Version="x.y.z" />
Usage Examples
Basic Matching
The simplest way to check if a string contains characters from a pattern in sequence:
using ktsu.FuzzySearch;
class Program
{
static void Main()
{
string text = "Hello World";
string pattern = "hlo";
bool isMatch = Fuzzy.Contains(text, pattern); // Returns true
}
}
Matching with Scoring
To get both a match result and a score that indicates the quality of the match:
using ktsu.FuzzySearch;
class Program
{
static void Main()
{
string text = "Hello World";
string pattern = "hlo";
var result = Fuzzy.Match(text, pattern);
Console.WriteLine($"Is match: {result.IsMatch}"); // True
Console.WriteLine($"Score: {result.Score}"); // A value between 0-1
Console.WriteLine($"Character indices: {result.Indices}"); // Indices of matched characters
}
}
Filtering a Collection
Filter a list of strings and sort them by match quality:
using ktsu.FuzzySearch;
class Program
{
static void Main()
{
var items = new List<string>
{
"AppDataStorage",
"Application Settings",
"Data Store",
"File System",
"Storage Provider"
};
string pattern = "appstor";
// Filter and rank by match quality
var results = Fuzzy.Filter(items, pattern);
foreach (var result in results)
{
Console.WriteLine($"{result.Item} (Score: {result.Score})");
}
// Output might be:
// AppDataStorage (Score: 0.89)
// Application Settings (Score: 0.65)
// Storage Provider (Score: 0.52)
}
}
Advanced Options
Customize the matching behavior with options:
using ktsu.FuzzySearch;
class Program
{
static void Main()
{
var options = new FuzzyOptions
{
CaseSensitive = true, // Default is false
ScoreThreshold = 0.4, // Minimum score to consider a match
BonusConsecutiveChars = 1.5, // Bonus for consecutive matched characters
BonusStartOfWord = 2.0, // Bonus for matches at word boundaries
PenaltyUnmatched = 0.1, // Penalty for unmatched characters
MaxPatternLength = 64 // Maximum pattern length to consider
};
string text = "FileSystemWatcher";
string pattern = "FSW";
var result = Fuzzy.Match(text, pattern, options);
Console.WriteLine($"Score with custom options: {result.Score}");
}
}
Object Collections
Filter and match against object collections by providing a selector function:
using ktsu.FuzzySearch;
class Program
{
class FileItem
{
public string Name { get; set; }
public string Path { get; set; }
public long Size { get; set; }
}
static void Main()
{
var files = new List<FileItem>
{
new FileItem { Name = "Document.pdf", Path = "/documents/", Size = 1024 },
new FileItem { Name = "Presentation.pptx", Path = "/presentations/", Size = 2048 },
new FileItem { Name = "Spreadsheet.xlsx", Path = "/spreadsheets/", Size = 512 }
};
string pattern = "doc";
// Filter objects using a selector function
var results = Fuzzy.Filter(files, pattern, item => item.Name);
foreach (var result in results)
{
Console.WriteLine($"{result.Item.Name} (Score: {result.Score})");
}
}
}
API Reference
Fuzzy Static Class
The main class providing fuzzy matching functionality.
Methods
| Name | Parameters | Return Type | Description |
|---|---|---|---|
Contains |
string text, string pattern, bool caseSensitive = false |
bool |
Checks if the text contains the pattern in sequence |
Match |
string text, string pattern, FuzzyOptions options = null |
FuzzyResult |
Matches text against pattern with scoring |
Filter |
IEnumerable<string> items, string pattern, FuzzyOptions options = null |
IEnumerable<FuzzyItem<string>> |
Filters and ranks a collection of strings |
Filter<T> |
IEnumerable<T> items, string pattern, Func<T, string> selector, FuzzyOptions options = null |
IEnumerable<FuzzyItem<T>> |
Filters and ranks a collection of objects using a selector function |
FuzzyResult Class
Represents the result of a fuzzy match operation.
Properties
| Name | Type | Description |
|---|---|---|
IsMatch |
bool |
Indicates if the pattern matches the text |
Score |
double |
A value between 0 and 1 indicating match quality (1 is perfect) |
Indices |
int[] |
The indices in the text where pattern characters were matched |
FuzzyOptions Class
Configuration options for fuzzy matching.
Properties
| Name | Type | Default | Description |
|---|---|---|---|
CaseSensitive |
bool |
false |
Whether matching should be case-sensitive |
ScoreThreshold |
double |
0.3 |
Minimum score required to consider a match valid |
BonusConsecutiveChars |
double |
1.0 |
Score bonus for consecutive matched characters |
BonusStartOfWord |
double |
1.5 |
Score bonus for matches at word boundaries |
PenaltyUnmatched |
double |
0.1 |
Score reduction for unmatched characters |
Contributing
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Please make sure to update tests as appropriate and adhere to the existing coding style.
License
This project is licensed under the MIT License - see the LICENSE.md file for details.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 is compatible. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
NuGet packages (3)
Showing the top 3 NuGet packages that depend on ktsu.FuzzySearch:
| Package | Downloads |
|---|---|
|
ktsu.ImGuiWidgets
A library of custom widgets using ImGui.NET and utilities to enhance ImGui-based applications. |
|
|
ktsu.TextFilter
A library providing methods for matching and filtering text. It supports glob patterns, regular expressions, and fuzzy matching. |
|
|
ktsu.Frontmatter
A .NET library for processing and manipulating YAML frontmatter in markdown files. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.2.24 | 53 | 7/1/2026 |
| 1.2.23 | 138 | 6/30/2026 |
| 1.2.22 | 195 | 6/29/2026 |
| 1.2.21 | 230 | 6/28/2026 |
| 1.2.20 | 96 | 6/28/2026 |
| 1.2.19 | 340 | 6/25/2026 |
| 1.2.18 | 151 | 6/22/2026 |
| 1.2.17 | 151 | 6/15/2026 |
| 1.2.16 | 133 | 6/13/2026 |
| 1.2.15 | 544 | 6/12/2026 |
| 1.2.14 | 365 | 6/8/2026 |
| 1.2.13 | 120 | 6/3/2026 |
| 1.2.12 | 110 | 6/2/2026 |
| 1.2.11 | 141 | 5/22/2026 |
| 1.2.10 | 120 | 5/19/2026 |
| 1.2.9 | 126 | 5/17/2026 |
| 1.2.9-pre.1 | 92 | 2/17/2026 |
| 1.2.8 | 661 | 2/16/2026 |
| 1.2.8-pre.1 | 77 | 2/16/2026 |
| 1.2.7 | 138 | 2/14/2026 |
## v1.2.24 (patch)
Changes since v1.2.23:
- Bump the ktsu group with 8 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.2.23 (patch)
Changes since v1.2.22:
- Bump Polyfill from 10.11.1 to 10.11.2 ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Bump the ktsu group with 8 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.2.22 (patch)
Changes since v1.2.21:
- Bump Polyfill from 10.11.0 to 10.11.1 ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.2.21 (patch)
Changes since v1.2.20:
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.2.20 (patch)
Changes since v1.2.19:
- chore: remove unused SourceLink package versions ([@matt-edmondson](https://github.com/matt-edmondson))
- chore: remove SourceLink package references from csproj ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.2.19 (patch)
Changes since v1.2.18:
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\dependabot.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync icon.png ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .gitignore ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .gitattributes ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Bump Polyfill from 10.10.0 to 10.11.0 ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.2.18 (patch)
Changes since v1.2.17:
- Bump the ktsu group with 8 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.2.17 (patch)
Changes since v1.2.16:
- Bump Polyfill from 10.8.1 to 10.10.0 ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Bump the ktsu group with 8 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.2.16 (patch)
Changes since v1.2.15:
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.2.15 (patch)
Changes since v1.2.14:
- Sync .github\workflows\update-sdks.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\dependabot.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .gitignore ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .gitattributes ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.2.14 (patch)
Changes since v1.2.13:
- Bump Polyfill from 10.8.0 to 10.8.1 ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Bump the ktsu group with 3 updates ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.2.13 (patch)
Changes since v1.2.12:
- Bump Polyfill from 10.7.1 to 10.8.0 ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.2.12 (patch)
Changes since v1.2.11:
- Bump Polyfill from 10.7.0 to 10.7.1 ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.2.11 (patch)
Changes since v1.2.10:
- Bump Polyfill from 10.6.0 to 10.7.0 ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.2.10 (patch)
Changes since v1.2.9:
- Bump Polyfill from 10.5.1 to 10.6.0 ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.2.9 (patch)
Changes since v1.2.8:
- Add TAGS.md with NuGet package tags ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.2.9-pre.1 (prerelease)
No significant changes detected since v1.2.9.
## v1.2.8 (patch)
Changes since v1.2.7:
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.2.8-pre.1 (prerelease)
No significant changes detected since v1.2.8.
## v1.2.7 (patch)
Changes since v1.2.6:
- Remove legacy build scripts ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.2.6 (patch)
Changes since v1.2.5:
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\update-winget-manifests.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\update-winget-manifests.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync COPYRIGHT.md ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\update-winget-manifests.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync COPYRIGHT.md ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.2.6-pre.8 (prerelease)
Changes since v1.2.6-pre.7:
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\update-winget-manifests.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.2.6-pre.7 (prerelease)
Changes since v1.2.6-pre.6:
- Sync scripts\update-winget-manifests.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.2.6-pre.6 (prerelease)
Changes since v1.2.6-pre.5:
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.2.6-pre.5 (prerelease)
Changes since v1.2.6-pre.4:
- Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.2.6-pre.4 (prerelease)
Changes since v1.2.6-pre.3:
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.2.6-pre.3 (prerelease)
Changes since v1.2.6-pre.2:
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync COPYRIGHT.md ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.2.6-pre.2 (prerelease)
Changes since v1.2.6-pre.1:
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.2.6-pre.1 (prerelease)
No significant changes detected since v1.2.6.
## v1.2.5 (patch)
Changes since v1.2.4:
- Remove .github\workflows\project.yml ([@matt-edmondson](https://github.com/matt-edmondson))
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .gitignore ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.2.5-pre.1 (prerelease)
No significant changes detected since v1.2.5.
## v1.2.4 (patch)
Changes since v1.2.3:
- migrate to dotnet 10 ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.2.4-pre.3 (prerelease)
Changes since v1.2.4-pre.2:
- Sync scripts\update-winget-manifests.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.2.4-pre.2 (prerelease)
Changes since v1.2.4-pre.1:
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.2.4-pre.1 (prerelease)
No significant changes detected since v1.2.4.
## v1.2.3 (patch)
Changes since v1.2.2:
- Update package versions and suppressions in project files. Removed specific package versions from Directory.Packages.props, updated ktsu SDK versions in global.json, and added numerous compatibility suppressions in CompatibilitySuppressions.xml for FuzzySearch project. ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.2.3-pre.1 (prerelease)
No significant changes detected since v1.2.3.
## v1.2.2 (patch)
Changes since v1.2.1:
- Update configuration files and scripts for improved build and test processes ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.2.2-pre.17 (prerelease)
Changes since v1.2.2-pre.16:
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .editorconfig ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .gitattributes ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .gitignore ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .mailmap ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .runsettings ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.2.2-pre.16 (prerelease)
Changes since v1.2.2-pre.15:
- Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .editorconfig ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .gitattributes ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .gitignore ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .mailmap ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .runsettings ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.2.2-pre.15 (prerelease)
Changes since v1.2.2-pre.14:
## v1.2.2-pre.14 (prerelease)
Changes since v1.2.2-pre.13:
## v1.2.2-pre.13 (prerelease)
Changes since v1.2.2-pre.12:
## v1.2.2-pre.12 (prerelease)
Changes since v1.2.2-pre.11:
## v1.2.2-pre.11 (prerelease)
Changes since v1.2.2-pre.10:
## v1.2.2-pre.10 (prerelease)
Changes since v1.2.2-pre.9:
## v1.2.2-pre.9 (prerelease)
Changes since v1.2.2-pre.8:
## v1.2.2-pre.8 (prerelease)
Changes since v1.2.2-pre.7:
## v1.2.2-pre.7 (prerelease)
Changes since v1.2.2-pre.6:
## v1.2.2-pre.6 (prerelease)
Changes since v1.2.2-pre.5:
## v1.2.2-pre.5 (prerelease)
Changes since v1.2.2-pre.4:
## v1.2.2-pre.4 (prerelease)
Changes since v1.2.2-pre.3:
## v1.2.2-pre.3 (prerelease)
Changes since v1.2.2-pre.2:
## v1.2.2-pre.2 (prerelease)
Changes since v1.2.2-pre.1:
## v1.2.2-pre.1 (prerelease)
No significant changes detected since v1.2.2.
## v1.2.1 (patch)
Changes since v1.2.0:
- Remove obsolete build configuration files and scripts ([@matt-edmondson](https://github.com/matt-edmondson))
- Update README and project files for improved clarity and SDK versioning ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.2.1-pre.2 (prerelease)
Changes since v1.2.1-pre.1:
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .editorconfig ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .runsettings ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.2.1-pre.1 (prerelease)
No significant changes detected since v1.2.1.
## v1.2.0 (minor)
Changes since v1.1.0:
- Refactor Fuzzy matching methods for performance ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.1.0 (minor)
Changes since v1.0.0:
- [minor] Fix typo in make-license.ps1 ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance fuzzy search library and add unit tests ([@matt-edmondson](https://github.com/matt-edmondson))
- Add automation scripts for metadata generation and project management ([@matt-edmondson](https://github.com/matt-edmondson))
- Renamed metadata files ([@matt-edmondson](https://github.com/matt-edmondson))
- Replace LICENSE file with LICENSE.md and update copyright information ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.14-pre.3 (prerelease)
Changes since v1.0.14-pre.2:
- Sync scripts\make-version.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\make-changelog.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.14-pre.2 (prerelease)
Changes since v1.0.14-pre.1:
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.14-pre.1 (prerelease)
Changes since v1.0.13:
- Sync scripts\make-version.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\make-changelog.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Bump MSTest from 3.7.2 to 3.7.3 ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Bump MSTest from 3.7.1 to 3.7.2 ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Bump coverlet.collector from 6.0.3 to 6.0.4 ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Bump MSTest from 3.7.0 to 3.7.1 ([@dependabot[bot]](https://github.com/dependabot[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\make-version.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\make-changelog.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\make-version.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .mailmap ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\make-changelog.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .mailmap ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.13
No significant changes detected since v1.0.13-pre.29.
## v1.0.13-pre.29 (prerelease)
Changes since v1.0.13-pre.28:
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.13-pre.28 (prerelease)
Changes since v1.0.13-pre.27:
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.13-pre.27 (prerelease)
Changes since v1.0.13-pre.26:
## v1.0.13-pre.26 (prerelease)
Changes since v1.0.13-pre.25:
## v1.0.13-pre.25 (prerelease)
Changes since v1.0.13-pre.24:
- Bump MSTest from 3.7.2 to 3.7.3 ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.13-pre.24 (prerelease)
Changes since v1.0.13-pre.23:
## v1.0.13-pre.23 (prerelease)
Changes since v1.0.13-pre.22:
## v1.0.13-pre.22 (prerelease)
Changes since v1.0.13-pre.21:
- Bump MSTest from 3.7.1 to 3.7.2 ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.13-pre.21 (prerelease)
Changes since v1.0.13-pre.20:
- Bump coverlet.collector from 6.0.3 to 6.0.4 ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.13-pre.20 (prerelease)
Changes since v1.0.13-pre.19:
## v1.0.13-pre.19 (prerelease)
Changes since v1.0.13-pre.18:
## v1.0.13-pre.18 (prerelease)
Changes since v1.0.13-pre.17:
- Bump MSTest from 3.7.0 to 3.7.1 ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.13-pre.17 (prerelease)
Changes since v1.0.13-pre.16:
## v1.0.13-pre.16 (prerelease)
Changes since v1.0.13-pre.15:
## v1.0.13-pre.15 (prerelease)
Changes since v1.0.13-pre.14:
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.13-pre.14 (prerelease)
Changes since v1.0.13-pre.13:
- Sync scripts\make-version.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\make-changelog.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.13-pre.13 (prerelease)
Changes since v1.0.13-pre.12:
## v1.0.13-pre.12 (prerelease)
Changes since v1.0.13-pre.11:
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.13-pre.11 (prerelease)
Changes since v1.0.13-pre.10:
## v1.0.13-pre.10 (prerelease)
Changes since v1.0.13-pre.9:
## v1.0.13-pre.9 (prerelease)
Changes since v1.0.13-pre.8:
- Sync scripts\make-version.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .mailmap ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.13-pre.8 (prerelease)
Changes since v1.0.13-pre.7:
- Sync scripts\make-changelog.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.13-pre.7 (prerelease)
Changes since v1.0.13-pre.6:
- Add automation scripts for metadata generation and project management ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.13-pre.6 (prerelease)
Changes since v1.0.13-pre.5:
## v1.0.13-pre.5 (prerelease)
Changes since v1.0.13-pre.4:
- Bump coverlet.collector from 6.0.2 to 6.0.3 ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.0.13-pre.4 (prerelease)
Changes since v1.0.13-pre.3:
## v1.0.13-pre.3 (prerelease)
Changes since v1.0.13-pre.2:
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.13-pre.2 (prerelease)
Changes since v1.0.13-pre.1:
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.13-pre.1 (prerelease)
No significant changes detected since v1.0.13.
## v1.0.12-pre.1 (prerelease)
Changes since v1.0.11:
- Renamed metadata files ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.11 (patch)
Changes since v1.0.10:
- Sync icon.png ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.10 (patch)
Changes since v1.0.9:
- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.10-pre.1 (prerelease)
Changes since v1.0.10:
- Renamed metadata files ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.9 (patch)
Changes since v1.0.8:
- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.8 (patch)
Changes since v1.0.7:
- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.7 (patch)
Changes since v1.0.6:
- Replace LICENSE file with LICENSE.md and update copyright information ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.6 (patch)
Changes since v1.0.5:
- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.5 (patch)
Changes since v1.0.4:
- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync icon.png ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.4 (patch)
Changes since v1.0.3:
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.3 (patch)
Changes since v1.0.2:
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.2 (patch)
Changes since v1.0.1:
- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.1 (patch)
Changes since v1.0.0:
- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync Directory.Build.props ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.0-alpha.18 (prerelease)
Changes since v1.0.0-alpha.17:
- Update VERSION to 1.0.0-alpha.18 ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.17 (prerelease)
Changes since v1.0.0-alpha.16:
- Update VERSION to 1.0.0-alpha.17 ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.16 (prerelease)
Changes since v1.0.0-alpha.15:
- Update VERSION to 1.0.0-alpha.16 ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.15 (prerelease)
Changes since v1.0.0-alpha.14:
- Update VERSION to 1.0.0-alpha.15 ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.14 (prerelease)
Changes since v1.0.0-alpha.13:
- Update VERSION to 1.0.0-alpha.14 ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.13 (prerelease)
Changes since v1.0.0-alpha.12:
- Update VERSION to 1.0.0-alpha.13 ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.12 (prerelease)
Changes since v1.0.0-alpha.11:
- Update VERSION to 1.0.0-alpha.12 ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.11 (prerelease)
Changes since v1.0.0-alpha.10:
- Update VERSION to 1.0.0-alpha.11 ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.10 (prerelease)
Changes since v1.0.0-alpha.9:
- Update VERSION to 1.0.0-alpha.10 ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.9 (prerelease)
Changes since v1.0.0-alpha.8:
- Update VERSION to 1.0.0-alpha.9 ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.8 (prerelease)
Changes since v1.0.0-alpha.7:
- Update VERSION to 1.0.0-alpha.8 ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.7 (prerelease)
Changes since v1.0.0-alpha.6:
## v1.0.0-alpha.6 (prerelease)
Changes since v1.0.0-alpha.5:
## v1.0.0-alpha.5 (prerelease)
Changes since v1.0.0-alpha.4:
## v1.0.0-alpha.4 (prerelease)
Changes since v1.0.0-alpha.3:
## v1.0.0-alpha.3 (prerelease)
Changes since v1.0.0-alpha.2:
- Sync .github\dependabot.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.0.0-alpha.2 (prerelease)
Changes since v1.0.0-alpha.1:
- Update VERSION ([@matt-edmondson](https://github.com/matt-edmondson))
- Migrate ktsu.io to ktsu namespace ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.0.0-alpha.1 (prerelease)
No significant changes detected since v1.0.0.
## v1.0.0 (major)
- Update VERSION ([@matt-edmondson](https://github.com/matt-edmondson))
- Migrate ktsu.io to ktsu namespace ([@matt-edmondson](https://github.com/matt-edmondson))
- Update Directory.Build.targets ([@matt-edmondson](https://github.com/matt-edmondson))
- Update dotnet.yml ([@matt-edmondson](https://github.com/matt-edmondson))
- Update dotnet.yml ([@matt-edmondson](https://github.com/matt-edmondson))
- Update dotnet.yml ([@matt-edmondson](https://github.com/matt-edmondson))
- Update Directory.Build.targets ([@matt-edmondson](https://github.com/matt-edmondson))
- Update Directory.Build.props ([@matt-edmondson](https://github.com/matt-edmondson))
- Update FuzzySearch.csproj ([@matt-edmondson](https://github.com/matt-edmondson))
- Update build config ([@matt-edmondson](https://github.com/matt-edmondson))
- Update LICENSE ([@matt-edmondson](https://github.com/matt-edmondson))
- Update nuget.config ([@matt-edmondson](https://github.com/matt-edmondson))
- Update nuget.config ([@matt-edmondson](https://github.com/matt-edmondson))
- Initial commit ([@matt-edmondson](https://github.com/matt-edmondson))