1k standalone fuzzy search / fuzzy filter a la Sublime Text's command-p fuzzy file search. Works in both node and browser.
Try it yourself: Disney Character Search Example
Node:
$ npm install --save fuzzy $ node > var fuzzy = require('fuzzy'); > console.log(fuzzy) { test: [Function], match: [Function], filter: [Function] }
Browser:
<script src="/path/to/fuzzy.js"></script> <script> console.log(fuzzy); // Object > // filter: function (pattern, arr, opts) { // match: function (pattern, string, opts) { // test: function (pattern, string) { </script>
Padawan: Simply filter an array of strings.
var list = ['baconing', 'narwhal', 'a mighty bear canoe']; var results = fuzzy.filter('bcn', list) var matches = results.map(function(el) { return el.string; }); console.log(matches); // [ 'baconing', 'a mighty bear canoe' ]
Jedi: Wrap matching characters in each string
var list = ['baconing', 'narwhal', 'a mighty bear canoe']; var options = { pre: '<', post: '>' }; var results = fuzzy.filter('bcn', list, options) console.log(results); // [ // {string: '<b>a<c>o<n>ing' , index: 0, score: 3, original: 'baconing'}, // {string: 'a mighty <b>ear <c>a<n>oe', index: 2, score: 3, original: 'a mighty bear canoe'} // ]
Jedi Master: sometimes the array you give is not an array of strings. You can pass in a function that creates the string to match against from each element in the given array
var list = [ {rompalu: 'baconing', zibbity: 'simba'} , {rompalu: 'narwhal' , zibbity: 'mufasa'} , {rompalu: 'a mighty bear canoe', zibbity: 'saddam hussein'} ]; var options = { pre: '<' , post: '>' , extract: function(el) { return el.rompalu; } }; var results = fuzzy.filter('bcn', list, options); var matches = results.map(function(el) { return el.string; }); console.log(matches); // [ '<b>a<c>o<n>ing', 'a mighty <b>ear <c>a<n>oe' ]
Check out the html files in the examples directory.
Try the examples live:
Code is well documented and the unit tests cover all functionality
Fork the repo!
git clone <your_fork>
cd fuzzy
npm install
make
Add unit tests for any new or changed functionality. Lint, test, and minify using make, then shoot me a pull request.
v0.1.0 - July 25, 2012
v0.1.1 - September 19, 2015
v0.1.2 - September 25, 2016
v0.1.3 - October 1, 2016
Copyright (c) 2015 Matt York Licensed under the MIT license.
<b>od<a>ciou<s> ba<s>s
. There is a test already written, just need to implement it. Naive O(n^2) worst case: find every match in the string, then select the highest scoring match. Should benchmark this against current implementation once implemented Also, "reactive rice" would be <r><e>active r<i><c>e
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4