mirror of
https://github.com/Readarr/Readarr
synced 2025-12-14 04:13:37 +01:00
Speed up FuzzyContains a bit more
This commit is contained in:
parent
e7410959fe
commit
4f46ab9a9a
1 changed files with 16 additions and 8 deletions
|
|
@ -107,12 +107,24 @@ private static Tuple<int, int, double> MatchBitap<T>(string text, string pattern
|
|||
|
||||
var adjustForWordBoundary = wordDelimiters != null;
|
||||
|
||||
var start = 1;
|
||||
var finish = text.Length + pattern.Length;
|
||||
var charMatches = new T[finish];
|
||||
|
||||
for (var c = start; c <= finish; c++)
|
||||
{
|
||||
if (text.Length <= c - 1 || !s.TryGetValue(text[c - 1], out var mask))
|
||||
{
|
||||
// Out of range.
|
||||
mask = allOnes;
|
||||
}
|
||||
|
||||
charMatches[c - 1] = mask;
|
||||
}
|
||||
|
||||
for (var d = 0; d < pattern.Length; d++)
|
||||
{
|
||||
// Scan for the best match; each iteration allows for one more error.
|
||||
var start = 1;
|
||||
var finish = text.Length + pattern.Length;
|
||||
|
||||
var rd = new T[finish + 2];
|
||||
|
||||
rd[finish + 1] = calculator.BitwiseComplement(calculator.Subtract(calculator.LeftShift(one, d), one));
|
||||
|
|
@ -124,11 +136,7 @@ private static Tuple<int, int, double> MatchBitap<T>(string text, string pattern
|
|||
|
||||
for (var j = finish; j >= start; j--)
|
||||
{
|
||||
if (text.Length <= j - 1 || !s.TryGetValue(text[j - 1], out var charMatch))
|
||||
{
|
||||
// Out of range.
|
||||
charMatch = allOnes;
|
||||
}
|
||||
T charMatch = charMatches[j - 1];
|
||||
|
||||
if (d == 0)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in a new issue