You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							185 lines
						
					
					
						
							5.6 KiB
						
					
					
				
			
		
		
	
	
							185 lines
						
					
					
						
							5.6 KiB
						
					
					
				| # 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).
 | |
| 
 | |
| ## Table of Contents
 | |
| 
 | |
| - [string-similarity](#string-similarity)
 | |
|   - [Table of Contents](#table-of-contents)
 | |
|   - [Usage](#usage)
 | |
|     - [For Node.js](#for-nodejs)
 | |
|     - [For browser apps](#for-browser-apps)
 | |
|   - [API](#api)
 | |
|     - [compareTwoStrings(string1, string2)](#comparetwostringsstring1-string2)
 | |
|       - [Arguments](#arguments)
 | |
|       - [Returns](#returns)
 | |
|       - [Examples](#examples)
 | |
|     - [findBestMatch(mainString, targetStrings)](#findbestmatchmainstring-targetstrings)
 | |
|       - [Arguments](#arguments-1)
 | |
|       - [Returns](#returns-1)
 | |
|       - [Examples](#examples-1)
 | |
|   - [Release Notes](#release-notes)
 | |
|     - [2.0.0](#200)
 | |
|     - [3.0.0](#300)
 | |
|     - [3.0.1](#301)
 | |
|     - [4.0.1](#401)
 | |
|     - [4.0.2](#402)
 | |
|     - [4.0.3](#403)
 | |
| 
 | |
| ## Usage
 | |
| 
 | |
| #### For Node.js
 | |
| 
 | |
| Install using:
 | |
| 
 | |
| ```shell
 | |
| npm install string-similarity --save
 | |
| ```
 | |
| 
 | |
| In your code:
 | |
| 
 | |
| ```javascript
 | |
| var stringSimilarity = require("string-similarity");
 | |
| 
 | |
| var similarity = stringSimilarity.compareTwoStrings("healed", "sealed");
 | |
| 
 | |
| var matches = stringSimilarity.findBestMatch("healed", [
 | |
|   "edward",
 | |
|   "sealed",
 | |
|   "theatre",
 | |
| ]);
 | |
| ```
 | |
| 
 | |
| #### For browser apps
 | |
| 
 | |
| Include `<script src="//unpkg.com/string-similarity/umd/string-similarity.min.js"></script>` to get the latest version.
 | |
| 
 | |
| Or `<script src="//unpkg.com/string-similarity@4.0.1/umd/string-similarity.min.js"></script>` to get a specific version (4.0.1) in this case.
 | |
| 
 | |
| This exposes a global variable called `stringSimilarity` which you can start using.
 | |
| 
 | |
| ```
 | |
| <script>
 | |
|   stringSimilarity.compareTwoStrings('what!', 'who?');
 | |
| </script>
 | |
| ```
 | |
| 
 | |
| (The package is exposed as UMD, so you can consume it as such)
 | |
| 
 | |
| ## API
 | |
| 
 | |
| The package contains two methods:
 | |
| 
 | |
| ### compareTwoStrings(string1, string2)
 | |
| 
 | |
| 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");
 | |
| // → 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 (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.',
 | |
|   '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
 | |
| }
 | |
| ```
 | |
| 
 | |
| ## Release Notes
 | |
| 
 | |
| ### 2.0.0
 | |
| 
 | |
| - 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
 | |
| 
 | |
| ### 3.0.1
 | |
| 
 | |
| - Refactoring: removed unused functions; used `substring` instead of `substr`
 | |
| - Updated dependencies
 | |
| 
 | |
| ### 4.0.1
 | |
| 
 | |
| - Distributing as an UMD build to be used in browsers.
 | |
| 
 | |
| ### 4.0.2
 | |
| 
 | |
| - 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))
 | |
| 
 | |
| ### 4.0.4
 | |
| 
 | |
| - Simplify some conditional statements. Also, update deps. (see [PR50](https://github.com/aceakash/string-similarity/pull/50))
 | |
| 
 | |
| 
 | |
| [](https://snyk.io/test/github/aceakash/string-similarity)
 |