Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

fuzzyset.js

Package Overview
Dependencies
Maintainers
1
Versions
16
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fuzzyset.js

A fast fuzzy string set for JavaScript

  • 1.0.7
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
14K
decreased by-5.66%
Maintainers
1
Weekly downloads
 
Created
Source

Fuzzyset - A fuzzy string set for javascript

Fuzzyset is a data structure that performs something akin to fulltext search against data to determine likely mispellings and approximate string matching.

Usage

The usage is simple. Just add a string to the set, and ask for it later by using .get:

   a = FuzzySet();
   a.add("michael axiak");
   a.get("micael asiak");
   // will be [[0.8461538461538461, 'michael axiak']];

The result will be an array of [score, matched_value] arrays. The score is between 0 and 1, with 1 being a perfect match.

Install

npm install fuzzyset

(Used to be fuzzyset.js.)

Then:

import FuzzySet from 'fuzzyset'

// or, depending on your JavaScript environment...

const FuzzySet = require('fuzzyset')

Or for use directly on the web:

<script type="text/javascript" src="dist/fuzzyset.js"></script>

This library should work just fine with TypeScript, too.

Construction Arguments

  • array: An array of strings to initialize the data structure with
  • useLevenshtein: Whether or not to use the levenshtein distance to determine the match scoring. Default: true
  • gramSizeLower: The lower bound of gram sizes to use, inclusive (see interactive documentation). Default: 2
  • gramSizeUpper: The upper bound of gram sizes to use, inclusive (see interactive documentation). Default: 3

Methods

  • get(value, [default], [minScore=.33]): try to match a string to entries with a score of at least minScore (defaulted to .33), otherwise return null or default if it is given.
  • add(value): add a value to the set returning false if it is already in the set.
  • length(): return the number of items in the set.
  • isEmpty(): returns true if the set is empty.
  • values(): returns an array of the values in the set.

Interactive Documentation

To play with the library or see how it works internally, check out the amazing interactive documentation:

Interactive documentation screenshot

Develop

To contribute to the library, edit the lib/fuzzyset.js file then run npm run build to generate all the different file formats in the dist/ directory. Or run npm run dev while developing to auto-build as you change files.

License

This package is licensed under the Prosperity Public License 3.0.

That means that this package is free to use for non-commercial projects — personal projects, public benefit projects, research, education, etc. (see the license for full details). If your project is commercial (even for internal use at your company), you have 30 days to try this package for free before you have to pay a one-time licensing fee of $42.

You can purchase a commercial license instantly here.

Why this license scheme? Since I quit tech to become a therapist, my income is much lower (due to the unjust costs of mental health care in the US, but don't get me started). I'm asking for paid licenses for Fuzzyset.js to support all the free work I've done on this project over the past 10 years (!) and so I can live a sustainable life in service of my therapy clients. If you're a small operation that would like to use Fuzzyset.js but can't swing the license cost, please reach out to me and we can work something out.

FAQs

Package last updated on 13 Dec 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc