Note: The fuzzy search plugin is deprecated since v1.5.0, it's now bundled into List.js.
To use the plugin you first need to download it:
bower install list.fuzzysearch.js
<script src="//cdnjs.cloudflare.com/ajax/libs/list.fuzzysearch.js/0.1.0/list.fuzzysearch.min.js"></script>
The default search will conduct a time efficient search for an exact match in the content searched, while the fuzzy search will render results depending on if they are included anywhere in the content.
var items = [
{ character: "Guybrush Threepwood", game: "The Secret of Monkey Island" },
{ character: "Manny Calavera", game: "Grim Fandango" },
{ character: "Bernard Bernoulli", game: "Maniac Mansion" }
];
list.search('gu thre'); // return none
list.fuzzySearch.search('gu thre') // return 1 item
<div id="list-id">
<input class="fuzzy-search" />
<ul class="list">
/ A bunch of items /
</ul>
</div>
<script>
var fuzzyOptions = {
searchClass: "fuzzy-search",
location: 0,
distance: 100,
threshold: 0.4,
multiSearch: true
};
var options = {
valueNames: [ 'name', 'category' ],
plugins: [
ListFuzzySearch(fuzzyOptions)
]
};
var listObj = new List('list-id', options);
// Search manually
listObj.fuzzySearch.search('my search');
// Search manually on specific columns
listObj.fuzzySearch.search('my search', { name: true });
</script>
All options are optional. Simplest implementation is:
plugins: [ ListFuzzySearch() ]
0.0
requires a perfect match (of both letters and location), a threshold of 1.0
would match anything.
searchString
or put searchString
as only argument
A big thanks to LuukvE who made a commit from which I could create this Fuzzy Search plugin.