@acusti/matchmaking
TypeScript icon, indicating that this package has built-in type declarations

0.7.0 • Public • Published

@acusti/matchmaking

latest version maintenance status bundle size downloads per month

Intuitive approximate string matching (i.e. fuzzy searches). See the tests to understand its behavior and evaluate if it’s what you are looking for.

Usage

npm install @acusti/matchmaking
# or
yarn add @acusti/matchmaking

matchmaking exports two functions: getBestMatch and sortByBestMatch. Import them by name:

import { getBestMatch, sortByBestMatch } from '@acusti/matchmaking';

Both functions take the same payload:

type Payload = {
    excludeMismatches?: boolean;
    items: Array<string>;
    text: string;
};

However, sortByBestMatch returns an array of items matching the one passed in but sorted by how close they match the passed-in text, while getBestMatch just returns the text of the single closest match found (i.e. sortByBestMatch(payload)[0]).

The excludeMismatches option for sortByBestMatch allows that function to also filter the results to only include (partial) matches, where a match include fuzzy matches that are strong enough to qualify as a partial match. For example, considering a list of all states in alphabetical order, searching for the text "ma" with excludeMismatches: true returns:

[
    'Maine', // exact match
    'Maryland', // exact match
    'Massachusetts', // exact match
    'Kansas', // partial match
    'Hawaii', // partial match
    'Michigan', // partial match (further distance on 2nd letter)
    'Minnesota', // partial match (further distance on 2nd letter)
    'Mississippi', // partial match (further distance on 2nd letter)
    'Missouri', // partial match (further distance on 2nd letter)
    'Alabama', // end-of-text exact match
    'Oklahoma', // end-of-text exact match
    'Nebraska', // short distance from match
    'Nevada', // short distance from match
    'New Hampshire', // short distance from match
    'New Jersey', // short distance from match
    'New Mexico', // short distance from match
    'New York', // short distance from match
]

Package Sidebar

Install

npm i @acusti/matchmaking

Weekly Downloads

104

Version

0.7.0

License

Unlicense

Unpacked Size

33.1 kB

Total Files

12

Last publish

Collaborators

  • acusti