@neosh11/autocomplete-search
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

npm-autocomplete

Overview

If you use react -> here is a package that could handle everything for you => Link

This TypeScript module provides a simple implementation of an auto-complete search using a trie data structure. It supports searching for words with a given prefix and inserting words with associated IDs into the trie. The module also provides an option for case-insensitive search

Function Time
insert(word: string, id: string) O(m), where m is the length of the word being inserted.
findWords(prefix: string, maxCount?: number) O(k + n), where n is the number of nodes, k is the lenght of the prefix

Why use this and not a simple filter?

We tested out a simple filter on 100,000 tokens on the browser and these were the results:

Method Time (ms)
Simple filter 467
autoCompleteSearch 4

If you want your results to instantly load as you're typing with a lot of data, this library will be a life saver!

Usage

install

# if using yarn
yarn add @neosh11/autocomplete-search

# if using npm
npm install @neosh11/autocomplete-search

AutoCompleteSearch

Importing the module

import { AutoCompleteSearch } from '@neosh11/autocomplete-search';

Initializing the AutoCompleteSearch

To create an instance of AutoCompleteSearch, use the constructor and pass an optional SearchOptions object:

const searchOptions = { ignoreCase: true };
const autoCompleteSearch = new AutoCompleteSearch(searchOptions);

The ignoreCase option, if set to true, will perform case-insensitive search and insertions.

Inserting words

To insert words into the trie, use the insert method:

autoCompleteSearch.insert('example', 'id123');

This inserts the word "example" with the associated ID "id123" into the trie.

Searching for words

To search for words with a given prefix, use the findWords method:

const results = autoCompleteSearch.findWords('exa', 5);

This searches for words with the prefix "exa" and returns up to 5 associated IDs in an array.

By default, the maximum number of ids returned is 100

String2ObjectAutoCompleteSearch

Importing the module

import { String2ObjectAutoCompleteSearch } from '@neosh11/autocomplete-search';

Initializing the AutoCompleteSearch

To create an instance of AutoCompleteSearch, use the constructor and pass an optional SearchOptions object:

const searchOptions = {
  ignoreCase: true,
  objectIdProperty: 'id',
  tokenizer: ' ',
};
const autoCompleteSearch = new AutoCompleteSearch(searchOptions);

The ignoreCase option, if set to true, will perform case-insensitive search and insertions.

The objectIdProperty option will examine which property to use as a unique ID

The tokenizer option, if used will tokenize the search string

Inserting words

To insert words into the trie, use the insert method:

autoCompleteSearch.insert('example', object);

This inserts the object with the word 'example'.

Searching for words

To search for words with a given prefix, use the findWords method:

const results = autoCompleteSearch.findObjects('exa', 5);

This searches for words with the prefix "exa" and returns up to 5 associated objects which match this description.

By default, the maximum number of ids returned is 100

Readme

Keywords

Package Sidebar

Install

npm i @neosh11/autocomplete-search

Weekly Downloads

0

Version

1.0.0

License

ISC

Unpacked Size

10.6 kB

Total Files

7

Last publish

Collaborators

  • neosh11