spelling-suggestion
TypeScript icon, indicating that this package has built-in type declarations

1.0.1 • Public • Published

Spelling Suggestion

Given a name and a list of names that are not equal to the name, return a spelling suggestion if there is one that is close enough.

MIT License Language PRs Welcome build coverage

Install

npm install --save spelling-suggestion

Usage

Names less than length 3 only check for case-insensitive equality, not Levenshtein distance.

  • If there is a candidate that's the same except for case, return that.
  • If there is a candidate that's within one edit of the name, return that.
  • Otherwise, return the candidate with the smallest Levenshtein distance, except for candidates:
    • With no name
    • Whose length differs from the target name by more than 0.34 of the length of the name.
    • Whose levenshtein distance is more than 0.4 of the length of the name (0.4 allows 1 substitution/transposition for every 5 characters, and 1 insertion/deletion at 3 characters)
import { getSpellingSuggestion } from 'spelling-suggestion';

// return the best matched item
getSpellingSuggestion(
  'foo',
  [
    { name: 'fo' },
    { name: 'foo' },
    { name: 'book' },
    { name: 'cook' },
    { name: 'food' },
  ],
  (candidate) => candidate.name,
)
// => { name: 'food' }

// return the best matched string
getSpellingSuggestion('foo', ['fo', 'foo', 'book', 'cook', 'food']) // => food

// return the best matched string with case-insensitive equality
getSpellingSuggestion('foo', ['fo', 'Foo', 'book', 'cook', 'food']) // => Foo

// return undefined when no match found
getSpellingSuggestion('fo', ['fo', 'foo', 'book', 'cook', 'food']) // => undefined

// return the first best match
getSpellingSuggestion('foo', ['fo', 'foo', 'food', 'fooo', 'fook']) // => food
getSpellingSuggestion('foo', ['fo', 'foo', 'fook', 'food', 'fooo']) // => fook
getSpellingSuggestion('foo', ['fo', 'foo', 'fooo', 'fook', 'food']) // => fooo

Contributing

Please let us know how can we help. Do check out issues for bug reports or suggestions first.

To become a contributor, please follow our contributing guide.

Contributors

License

The scripts and documentation in this project are released under the MIT License

Package Sidebar

Install

npm i spelling-suggestion

Weekly Downloads

3

Version

1.0.1

License

MIT

Unpacked Size

33 kB

Total Files

17

Last publish

Collaborators

  • bubkoo