Skip to content
This repository has been archived by the owner on May 1, 2023. It is now read-only.

Commit

Permalink
update readme
Browse files Browse the repository at this point in the history
  • Loading branch information
aceakash committed Jan 6, 2021
1 parent 7ab3d72 commit 07cbc8d
Showing 1 changed file with 59 additions and 40 deletions.
99 changes: 59 additions & 40 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
string-similarity
=================
# string-similarity

Finds degree of similarity between two strings, based on [Dice's Coefficient](http://en.wikipedia.org/wiki/S%C3%B8rensen%E2%80%93Dice_coefficient), which is mostly better than [Levenshtein distance](http://en.wikipedia.org/wiki/Levenshtein_distance).

Expand All @@ -8,17 +7,17 @@ Finds degree of similarity between two strings, based on [Dice's Coefficient](ht
- [string-similarity](#string-similarity)
- [Table of Contents](#table-of-contents)
- [Usage](#usage)
- [For Node.js](#for-nodejs)
- [For browser apps](#for-browser-apps)
- [For Node.js](#for-nodejs)
- [For browser apps](#for-browser-apps)
- [API](#api)
- [compareTwoStrings(string1, string2)](#comparetwostringsstring1-string2)
- [Arguments](#arguments)
- [Returns](#returns)
- [Examples](#examples)
- [Arguments](#arguments)
- [Returns](#returns)
- [Examples](#examples)
- [findBestMatch(mainString, targetStrings)](#findbestmatchmainstring-targetstrings)
- [Arguments](#arguments-1)
- [Returns](#returns-1)
- [Examples](#examples-1)
- [Arguments](#arguments-1)
- [Returns](#returns-1)
- [Examples](#examples-1)
- [Release Notes](#release-notes)
- [2.0.0](#200)
- [3.0.0](#300)
Expand All @@ -27,7 +26,6 @@ Finds degree of similarity between two strings, based on [Dice's Coefficient](ht
- [4.0.2](#402)
- [4.0.3](#403)


## Usage

#### For Node.js
Expand All @@ -41,11 +39,15 @@ npm install string-similarity --save
In your code:

```javascript
var stringSimilarity = require('string-similarity');
var stringSimilarity = require("string-similarity");

var similarity = stringSimilarity.compareTwoStrings('healed', 'sealed');
var similarity = stringSimilarity.compareTwoStrings("healed", "sealed");

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

#### For browser apps
Expand Down Expand Up @@ -73,32 +75,38 @@ The package contains two methods:
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. string1 (string): The first string
2. string2 (string): The second string

Order does not make a difference.

##### Returns

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

##### Examples

```javascript
stringSimilarity.compareTwoStrings('healed', 'sealed');
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.');
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');
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.');
stringSimilarity.compareTwoStrings(
"Olive-green table for sale, in extremely good condition.",
"Wanted: mountain bike with at least 21 gears."
);
// → 0.1411764705882353
```

Expand All @@ -112,16 +120,18 @@ Compares `mainString` against each string in `targetStrings`.
2. targetStrings (Array): Each string in this array will be matched against the main string.

##### Returns

(Object): 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

```javascript
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.',
'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 },
Expand All @@ -132,34 +142,43 @@ stringSimilarity.findBestMatch('Olive-green table for sale, in extremely good co
bestMatch:
{ target: 'For sale: table in very good condition, olive green in colour.',
rating: 0.6060606060606061 },
bestMatchIndex: 1
bestMatchIndex: 1
}
```

## Release Notes

### 2.0.0
* Removed production dependencies
* Updated to ES6 (this breaks backward-compatibility for pre-ES6 apps)

- Removed production dependencies
- Updated to ES6 (this breaks backward-compatibility for pre-ES6 apps)

### 3.0.0
* Performance improvement for `compareTwoStrings(..)`: now O(n) instead of O(n^2)
* The algorithm has been tweaked slightly to disregard spaces and word boundaries. This will change the rating values slightly but not enough to make a significant difference
* Adding a `bestMatchIndex` to the results for `findBestMatch(..)` to point to the best match in the supplied `targetStrings` array

- Performance improvement for `compareTwoStrings(..)`: now O(n) instead of O(n^2)
- The algorithm has been tweaked slightly to disregard spaces and word boundaries. This will change the rating values slightly but not enough to make a significant difference
- Adding a `bestMatchIndex` to the results for `findBestMatch(..)` to point to the best match in the supplied `targetStrings` array

### 3.0.1
* Refactoring: removed unused functions; used `substring` instead of `substr`
* Updated dependencies

- Refactoring: removed unused functions; used `substring` instead of `substr`
- Updated dependencies

### 4.0.1
* Distributing as an UMD build to be used in browsers.

- Distributing as an UMD build to be used in browsers.

### 4.0.2
* Update dependencies to latest versions.

- Update dependencies to latest versions.

### 4.0.3
* Make compatible with IE and ES5. Also, update deps. (see [PR56](https://github.com/aceakash/string-similarity/pull/56))

- Make compatible with IE and ES5. Also, update deps. (see [PR56](https://github.com/aceakash/string-similarity/pull/56))

### 4.0.4

- Simplify some conditional statements. Also, update deps. (see [PR50](https://github.com/aceakash/string-similarity/pull/50))

![Build status](https://codeship.com/projects/2aa453d0-0959-0134-8a76-4abcb29fe9b4/status?branch=master)
[![Known Vulnerabilities](https://snyk.io/test/github/aceakash/string-similarity/badge.svg)](https://snyk.io/test/github/aceakash/string-similarity)

0 comments on commit 07cbc8d

Please sign in to comment.