@acusti/matchmaking
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',
'Maryland',
'Massachusetts',
'Kansas',
'Hawaii',
'Michigan',
'Minnesota',
'Mississippi',
'Missouri',
'Alabama',
'Oklahoma',
'Nebraska',
'Nevada',
'New Hampshire',
'New Jersey',
'New Mexico',
'New York',
]