rapidfuzz 0.1.1 copy "rapidfuzz: ^0.1.1" to clipboard
rapidfuzz: ^0.1.1 copied to clipboard

A dart port of the rapidfuzz library, for fuzzy-matching strings, and calculating the edit distance between strings.

rapidfuzz #

A Flutter port of the rapidfuzz library. Note that results may differ from the original implementation due to minor differences in the implementation.

Usage #

Installation #

flutter pub add rapidfuzz

Import #

import 'package:rapidfuzz/rapidfuzz.dart';

Algorithms #

Ratio #

Calculates a Levenshtein simple ratio between the strings This indicates a measure of similarity

ratio("this is a test", "this is a test!") // 96.55172413793103

Partial Ratio #

Inconsistent substrings lead to problems in matching. This ratio uses a heuristic called "best partial" for when two strings are of noticeably different lengths.

partialRatio("this is a test", "this is a test!") // 100.0

Token Sort Ratio #

Find all alphanumeric tokens in the string and sort these tokens and then take ratio of resulting joined strings.

ratio("fuzzy wuzzy was a bear", "wuzzy fuzzy was a bear") // 90.90908813476562
tokenSortRatio("fuzzy wuzzy was a bear", "wuzzy fuzzy was a bear") // 100

Token Set Ratio #

Splits the strings into tokens and computes intersections and remainders between the tokens of the two strings. A comparison string is then built up and is compared using the simple ratio algorithm.

tokenSortRatio("fuzzy was a bear", "fuzzy fuzzy was a bear") // 83.8709716796875
tokenSetRatio("fuzzy was a bear", "fuzzy fuzzy was a bear") // 100

Weighted Ratio #

Calculates a weighted ratio between [s1] and [s2] using the best option from the above fuzzy matching algorithms

weightedRatio("The quick brown fox jimps ofver the small lazy dog", "the quick brown fox jumps over the small lazy dog") // 96.96969696969697

Extraction #

It is often more useful to extract the most similar strings from a list of strings than to calculate the ratio between two strings.

extractOne(
  query: 'cowboys',
  choices: [
    'Atlanta Falcons',
    'New York Jets',
    'New York Giants',
    'Dallas Cowboys'
  ],
  cutoff: 10,
) // (string Dallas Cowboys, score: 90.0, index: 3)
extractTop(
  query: 'goolge',
  choices: [
    'google',
    'bing',
    'facebook',
    'linkedin',
    'twitter',
    'googleplus',
    'bingnews',
    'plexoogl'
  ],
  limit: 4,
  cutoff: 50,
) // [(string googleplus, score: 90.0, index: 5), (string google, score: 83.33333333333334, index: 0)]
extractAllSorted(
  query: 'goolge',
  choices: [
    'google',
    'bing',
    'facebook',
    'linkedin',
    'twitter',
    'googleplus',
    'bingnews',
    'plexoogl'
  ],
  cutoff: 10,
) // [(string googleplus, score: 90.0, index: 5), (string google, score: 83.33333333333334, index: 0), (string plexoogl, score: 42.85714285714286, index: 7), (string bingnews, score: 28.57142857142857, index: 6), (string linkedin, score: 28.57142857142857, index: 3), (string facebook, score: 28.57142857142857, index: 2), (string bing, score: 22.5, index: 1), (string twitter, score: 15.384615384615385, index: 4)]
extractAll(
  query: 'goolge',
  choices: [
    'google',
    'bing',
    'facebook',
    'linkedin',
    'twitter',
    'googleplus',
    'bingnews',
    'plexoogl'
  ],
  cutoff: 10,
) // [(string google, score: 83.33333333333334, index: 0), (string bing, score: 22.5, index: 1), (string facebook, score: 28.57142857142857, index: 2), (string linkedin, score: 28.57142857142857, index: 3), (string twitter, score: 15.384615384615385, index: 4), (string googleplus, score: 90.0, index: 5), (string bingnews, score: 28.57142857142857, index: 6), (string plexoogl, score: 42.85714285714286, index: 7)]

Extract using any a list of any type #

All extract methods can receive List<T> and return List<ExtractedResult<T>>

class TestContainer {
  final String innerVal;
  TestContainer(this.innerVal);
}

extractOne<TestContainer>(
  query: 'cowboys',
  choices: [
    'Atlanta Falcons',
    'New York Jets',
    'New York Giants',
    'Dallas Cowboys'
  ].map((e) => TestContainer(e)).toList(),
  cutoff: 10,
  getter: (x) => x.innerVal
).toString(); // (string Dallas Cowboys, score: 90.0, index: 3)
1
likes
160
points
208
downloads

Publisher

verified publisherkat.bio

Weekly Downloads

A dart port of the rapidfuzz library, for fuzzy-matching strings, and calculating the edit distance between strings.

Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

collection

More

Packages that depend on rapidfuzz