Skip to content

void666/node-trie

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

node-trie

npm version coverage build status downloads downloads monthly

Simple trie data structure representation in javascript. Perfect for search on key-press.

Features

  • Provides near match result for strings only.
  • Delimiter supports positive integer (count of characters), a regex or string.
  • Supports soft delete of strings (will not appear in the search result)
  • Supports add all , remove all and near match all. Accepts array of strings for processing the stated functionality.

Usage

Instantiation

Following ways can be used to instantiate a Trie.

 const Trie = require('trie-d');
 const trie = new Trie(); // Without delimiter, splits string by each character.
 const trieWithRegDelimiter = new Trie ({delimiter : '/n'}); // Regex delimiter (should split string by new line)
 const trieWithCountDelimiter = new Trie({delimiter : 10}); // Count delimiter, splits string by number of 10 characters from start index.
 const trieWithCharacterDelimiter = new Trie({delimiter : 'c'}); // splits string at every instance of character `c`

Addition of Elements

Following ways can be used to add elements to a Trie

// from previous referrences
const inputs = ['abc', 'abcd', 'abcdef', 'abcdefgh', 'abcdefg', 'abcf', 'abcaad', 'ab', 'nabc','afg', 'naa', 'de', 'z'];
trie.addAll(inputs); // add all functionality
trieWithRegDelimiter.add("This is amazing.\n I am so happy!\n"); //single element addition.

Searching of Elements

Following methods can be used to search elements. Each element is delimited based on the trie's delimiter definition. The result is lexicographically sorted.

// from previous referrences
const result = trie.nearMatch('abc'); 
// result = ['abc', 'abcd', 'abcdef', 'abcdefgh', 'abcdefg', 'abcf', 'abcaad'];

const resultAll = trie.nearMatch(['abc', 'na']); // multi string search. The result is union of all key word's result. 
// resultAll = ['abc', 'abcd', 'abcdef', 'abcdefgh', 'abcdefg', 'abcf', 'abcaad', 'naa', 'nabc'];

Removal (soft delete) of Elements

Soft-delete of strings, does not delete the string, but disables it from search.

// from previous referrences

const result = trie.nearMatch('abc'); 
// result = ['abc', 'abcd', 'abcdef', 'abcdefgh', 'abcdefg', 'abcf', 'abcaad'];
trie.remove('abc');
const resultAfterRemoval = trie.nearMatch('abc');
// resultAfterRemoval = ['abcd', 'abcdef', 'abcdefgh', 'abcdefg', 'abcf', 'abcaad']; // no word `abc`

trie.removeAll(['abcd', 'abcf']); // multi removal.
const resultPostMultiRemoval = trie.nearMatch('abc');
// resultPostMultiRemoval = ['abcdef', 'abcdefgh', 'abcdefg', 'abcaad']; // no word `abcd` and `abcf`

Installation

npm install trie-d

Test

npm test