Skip to content

eklem/leven-match

Repository files navigation

leven-match

NPM version NPM downloads MIT License Build Status JavaScript Style Guide

Return all word matches between two arrays within given Levenshtein distance.

Intended use is to return all words in a query that has matches in an index within a given Levenshtein distance. Good for autocomplete type functionality, and in some cases also searching.

Part of daq-proc - Simple document and query processing for offline-first search.

Breaking change

Importing/requiring script has changed slightly for CJS and ESM. UMD is as it was.

Initiating

UMD - Universal module definition/browser

<script src="https://cdn.jsdelivr.net/npm/leven-match/dist/leven-match.umd.min.js"></script>
// lvm.levenMatch available

CJS - CommonJS

const { levenMatch } = require('leven-match')
// levenMatch available

ESM - Ecmascript module

import { levenMatch } from 'leven-match'
// levenMatch available

Use

<script>
  const index = ['return', 'all', 'word', 'matches', 'between', 'two', 'arrays', 'within', 'given', 'levenshtein', 'distance', 'intended', 'use', 'is', 'to', 'words', 'in', 'a', 'query', 'that', 'has', 'an', 'index', 'good', 'for', 'autocomplete', 'type', 'functionality,', 'and', 'some', 'cases', 'also', 'searching']
  const query = ['qvery', 'words', 'levensthein']

  levenMatch(query, index, {distance: 2})
  // returns:
  //[ [ 'query' ], [ 'word', 'words' ], [ 'levenshtein' ] ]
</script>

Returns an array of arrays. One sub-array for each query word.