string_similarity 1.0.1

string-similarity #

Finds degree of similarity between two strings, based on Dice's Coefficient, which is mostly better than Levenshtein distance.

Table of Contents #

Usage #

In your code:

import  'package:string_similarity/string_similarity.dart';

var similarity = StringSimilarity.compareTwoStrings('french', 'quebec');

var matches = StringSimilarity.findBestMatch('healed', ['edward', 'sealed', 'theatre']);

API #

Requiring the module gives an object with two methods:

compareTwoStrings(first, second) #

Returns a fraction between 0 and 1, which indicates the degree of similarity between the two strings. 0 indicates completely different strings, 1 indicates identical strings. The comparison is case-sensitive.

Arguments #
  1. first (String): The first string
  2. second (String): The second string

Order does not make a difference.

Returns #

(double): A fraction from 0 to 1, both inclusive. Higher number indicates more similarity.

Examples #
stringSimilarity.compareTwoStrings('healed', 'sealed');
// → 0.8

stringSimilarity.compareTwoStrings('Olive-green table for sale, in extremely good condition.',
  'For sale: table in very good  condition, olive green in colour.');
// → 0.6060606060606061

stringSimilarity.compareTwoStrings('Olive-green table for sale, in extremely good condition.',
  'For sale: green Subaru Impreza, 210,000 miles');
// → 0.2558139534883721

stringSimilarity.compareTwoStrings('Olive-green table for sale, in extremely good condition.',
  'Wanted: mountain bike with at least 21 gears.');
// → 0.1411764705882353

findBestMatch(mainString, targetStrings) #

Compares mainString against each string in targetStrings.

Arguments #
  1. mainString (String): The string to match each target string against.
  2. targetStrings (List
Returns #

(BestMatch): An object with a ratings property, which gives a similarity rating for each target string, a bestMatch property, which specifies which target string was most similar to the main string, and a bestMatchIndex property, which specifies the index of the bestMatch in the targetStrings array.

Examples #
stringSimilarity.findBestMatch('Olive-green table for sale, in extremely good condition.', [
  'For sale: green Subaru Impreza, 210,000 miles',
  'For sale: table in very good condition, olive green in colour.',
  'Wanted: mountain bike with at least 21 gears.'
]);
// →
{ ratings:
   [ { target: 'For sale: green Subaru Impreza, 210,000 miles',
       rating: 0.2558139534883721 },
     { target: 'For sale: table in very good condition, olive green in colour.',
       rating: 0.6060606060606061 },
     { target: 'Wanted: mountain bike with at least 21 gears.',
       rating: 0.1411764705882353 } ],
  bestMatch:
   { target: 'For sale: table in very good condition, olive green in colour.',
     rating: 0.6060606060606061 },
  bestMatchIndex: 1
}

#

based on 'string-similarity' Javascript project : https://github.com/aceakash/string-similarity

1.0.1 #

  • update doc

1.0.0 #

  • initial version

example/string_similarity_example.dart

import 'package:string_similarity/string_similarity.dart';

void main() {
  StringSimilarity.compareTwoStrings('french', 'quebec'); // -> 0

  StringSimilarity.compareTwoStrings('healed', 'sealed'); // → 0.8

  StringSimilarity.findBestMatch('Olive-green table for sale, in extremely good condition.', <String>[
    'For sale: green Subaru Impreza, 210,000 miles',
    'For sale: table in very good condition, olive green in colour.',
    'Wanted: mountain bike with at least 21 gears.'
  ]);
/* ->
{ ratings:
   [ { target: 'For sale: green Subaru Impreza, 210,000 miles',
       rating: 0.2558139534883721 },
     { target: 'For sale: table in very good condition, olive green in colour.',
       rating: 0.6060606060606061 },
     { target: 'Wanted: mountain bike with at least 21 gears.',
       rating: 0.1411764705882353 } ],
  bestMatch:
   { target: 'For sale: table in very good condition, olive green in colour.',
     rating: 0.6060606060606061 },
  bestMatchIndex: 1 
}
*/
}

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  string_similarity: ^1.0.1

2. Install it

You can install packages from the command line:

with pub:


$ pub get

with Flutter:


$ flutter pub get

Alternatively, your editor might support pub get or flutter pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


import 'package:string_similarity/string_similarity.dart';
  
Popularity:
Describes how popular the package is relative to other packages. [more]
61
Health:
Code health derived from static analysis. [more]
100
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
100
Overall:
Weighted score of the above. [more]
81
Learn more about scoring.

We analyzed this package on Sep 10, 2019, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.5.0
  • pana: 0.12.21

Platforms

Detected platforms: Flutter, web, other

No platform restriction found in primary library package:string_similarity/string_similarity.dart.

Health suggestions

Format lib/src/string_similarity_base.dart.

Run dartfmt to format lib/src/string_similarity_base.dart.

Dependencies

Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.4.0 <3.0.0
Dev dependencies
pedantic ^1.7.0
test ^1.6.0