node-trie
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