大家好,我是前端实验室的大师兄!
这段时间大师兄项目中出现了固定数据池的模糊检索需求
,也就是在一大堆几乎不变化的数据中进行模糊检索。同时,这样的检索需求在同模块中也会出现很多次。
目前大部分的模糊搜索是这样的:
①模糊关键字==》②请求后端接口==》③后端返回匹配的内容==》④客户端渲染
由于总数据几乎固定,我们不太可能每次都请求后端进行模糊检索--效率太差
。
因此,我们要在客户端实现数据的隔离检索。今天大师兄给大家分享一款可支持前端模糊搜索
的工具:Fuse.js
这是一个优秀的搜索工具库,简单几行代码就可以实现模糊搜索,体积小巧无依赖。
Fuse.js
是一个功能强大、轻量级的模糊搜索库
,通过提供简单的 api 调用,达到强大的模糊搜索效果,无需搞懂复杂的模糊搜索算法。
Fuse.js 支持多种方式安装使用,可以直接在 Vue 项目中使用:
// npm 安装
npm install --save fuse.js
// yarn 安装
yarn add fuse.js
如果是在浏览器页面中使用,直接引入即可:
<script src="https://cdn.jsdelivr.net/npm/fuse.js/dist/fuse.js"></script>
一个基础的模糊搜索代码如下:
// 搜索数据
const list = [
{
"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"
]
};
// 实例化 Fuse
const fuse = new Fuse(list, options);
// 传入搜索关键词,返回搜索结果
const pattern = "clolny"
return fuse.search(pattern)
整个工具非常简单,数据
、配置
、搜索关键字
三个部分即可让项目快速支持了模糊搜索
工具使用和配置不存在什么门槛,亲测发现该工具对中文字符串搜索
的支持也很好。
索引
Fuse.js 能提供高效的检索速度,离不开索引
。这个是重中之重。这里给大家演示下。
索引可以在构建阶段就提前准备好。也可以在其他时机,只要在使用前能获取即可。
// Create the Fuse index
const myIndex = Fuse.createIndex(['title', 'author.firstName'], list)
// Serialize and save it
fs.writeFile('fuse-index.json', JSON.stringify(myIndex.toJSON()))
// Load and deserialize index
const fuseIndex = await require('fuse-index.json')
const myIndex = Fuse.parseIndex(fuseIndex)
// initialize Fuse with the index
const fuse = new Fuse(list, options, myIndex)
通过上面的操作。前面list数组的数据就构建好索引了。即使list中数据量很大,检索的速度也是很快的。
Fuse.js
官网提供了API详解、配置示例,以及大量的代码例子和 demo 来演示效果。大家赶紧去试试!
Fuse.js地址 https://fusejs.io/
欢迎加入前端实验室读者交流群,群里有不少技术大神,不定时会分享一些技术要点,更有一些资源收藏爱好者会分享一些优质的学习资料。吃瓜、摸鱼、白嫖技术就等你了~
进群方式:在下方公众号后台,回复111
,按提示操作即可进群。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有