Introduction to Fuse.js
Fuse.js is a powerful and lightweight fuzzy-search library, especially useful when trying to implement search functionality in JavaScript applications. It enables searching through large sets of data with ease and efficiency. In this blog post, we will dive deep into Fuse.js, exploring its various APIs with examples and discussing how to build an application using these APIs.
Getting Started with Fuse.js
To begin with, let’s install Fuse.js:
npm install fuse.js
Basic Usage
Create a Fuse instance by passing in a list and options object.
const Fuse = require('fuse.js');
const list = [{ title: "Old Man's War" }, { title: "The Lock Artist" }];
const options = {
keys: ['title']
};
const fuse = new Fuse(list, options);
const result = fuse.search("old");
console.log(result); // [{ title: "Old Man's War", ... }]
Advanced Options
Fuse.js comes with several advanced options for customized search functionality:
const options = {
isCaseSensitive: false,
includeScore: true,
shouldSort: true,
includeMatches: true,
findAllMatches: false,
minMatchCharLength: 1,
location: 0,
threshold: 0.6,
distance: 100,
useExtendedSearch: false,
ignoreLocation: false,
keys: ['title']
};
Search in Nested Objects
Search capabilities go beyond flat structures and extend to nested objects:
const books = [
{
title: "Old Man's War",
author: {
firstName: "John",
lastName: "Scalzi"
}
},
{
title: "The Lock Artist",
author: {
firstName: "Steve",
lastName: "Hamilton"
}
}
];
const options = {
keys: ['title', 'author.firstName', 'author.lastName']
};
const fuse = new Fuse(books, options);
const result = fuse.search("John");
console.log(result); // [{ title: "Old Man's War", author: { firstName: "John", ... } }]
Weighted Search
You can assign different weights to different keys to prioritize certain fields:
const books = [{ title: "Old Man's War", author: "John Scalzi" }, { title: "The Lock Artist", author: "Steve Hamilton" }];
const options = {
keys: [
{ name: 'title', weight: 0.3 },
{ name: 'author', weight: 0.7 }
]
};
const fuse = new Fuse(books, options);
const result = fuse.search("John");
console.log(result); // Result includes weights and is influenced by them
Building a Search Application with Fuse.js
Now let’s create a simple web application that integrates all the concepts discussed.
Fuse.js Search App
Book Search Application
By integrating Fuse.js into your web application, you can easily implement fast and efficient search functionality.
Enjoy using Fuse.js and happy coding!
Hash: 7106d7d34e9b05e4e290578fd609fafef3cc2a9ea6e43ed3fc512a488eb63008