A fuzzy text searching library for the modern web built with TypeScript and Rust.
An example using React can be found here by @stephenwf
fiveo-web
can be used to efficiently find approximate string matches across large in-memory dictionaries. The aim is to use emerging web technologies to beat the performance of existing solutions.
fiveo-web
is built on modern web technologies and requires implementations of two work in progress specifications to run:
The package can be installed via npm:
> $ npm install --save fiveo-web
Then you can include it on your build, or directly on a web page, and start using it.
fiveo-web
exports a single function that can be called to asynchronously create a Matcher
:
const fiveo = require('fiveo-web');
const matcher = await fiveo.createBlockingMatcher([
"entry 1", "entry 2", "entry 3"
]);
The Matcher
can then be used to search
for matches:
const query = "entry";
const maxResults = 10;
const results = await matcher.search(query, maxResults);
After cloning the git repository and installing dependencies via npm install
, a webpack build can be ran with npm run build
. This will output TypeScript declaration files and transpiled code to dist/
.
fiveo-web
ships with a single benchmark that indexes a subset of an English dictionary. It can be ran by building the benchmark with webpack:
> $ npx webpack
Then running it from the shell or including the resulting script on a web page:
> $ node dist/english_dictionary_bench_suite
english_word_list (310k entries) x 703 ops/sec ±0.00% (1 run sampled)
english_word_list (310k entries) x 769 ops/sec ±7.82% (2 runs sampled)
english_word_list (310k entries) x 789 ops/sec ±13.53% (3 runs sampled)
english_word_list (310k entries) x 824 ops/sec ±10.13% (4 runs sampled)
english_word_list (310k entries) x 820 ops/sec ±9.22% (5 runs sampled)
english_word_list (310k entries) x 772 ops/sec ±7.92% (6 runs sampled)
english_word_list (310k entries) x 811 ops/sec ±6.39% (7 runs sampled)
english_word_list (310k entries) x 808 ops/sec ±5.65% (8 runs sampled)
english_word_list (310k entries) x 766 ops/sec ±5.04% (9 runs sampled)
Contributions via GitHub are welcome. Please follow the standard conventional changelog commit format.
fiveo-web
is licensed under the ISC license. Please see the LICENSE
file for more information.