npm 包 @gasbuddy/fuzzy-search 使用教程

阅读时长 6 分钟读完

前言

在日常的前端开发中,我们常常会遇到需要进行模糊搜索的情况。针对这种需求,npm 上有很多模糊搜索的工具包。@gasbuddy/fuzzy-search 是其中一种比较优秀的模糊搜索工具包,它具有较高的搜索效率和较强的搜索准确度,可以极大地简化我们的搜索开发流程。

本文将介绍如何安装和使用 @gasbuddy/fuzzy-search 包以及它的一些高级用法,旨在帮助读者更快速地掌握这个工具包并提高搜索开发效率。

安装

首先,我们需要在项目中安装 @gasbuddy/fuzzy-search。推荐使用 npm 进行安装。

安装成功后,我们可以开始进入包的使用环节。

基本用法

@gasbuddy/fuzzy-search 包提供了很简单的 API 接口,非常容易使用。

-- -------------------- ---- -------
------ - ----------- - ---- -------------------------

----- ------- - -
  -------------- ------ -- -------
  ----- ----- -- ----
  ----- --------- -- -----------------
  ---------- ---- -- -------------------------- ---
--

----- ---- - -
  - ----- ------- ---- -- --
  - ----- ------- ---- -- --
  - ----- -------- ---- -- --
--

----- ------- - ------------------ ----- ---------
---------------------
-- ---
-- -
--   - ----- ------- ---- -- --
--   - ----- -------- ---- -- --
-- -

在上面的代码中,我们传入了三个参数:

  • search:要搜索的关键字(字符串类型)。
  • data:要进行搜索的数据(数组类型)。每个数组元素都是一个对象,包含多个属性。
  • options:搜索的配置选项(对象类型),包括 caseSensitivesortkeysthreshold 四个字段。

其中,options 的字段说明如下:

  • caseSensitive:是否区分大小写,默认为 false
  • sort:是否按照匹配程度排序,默认为 true
  • keys:要搜索的对象属性字段名,可以传入一个字符串或者多个(数组类型)。
  • threshold:搜索的阈值,表示必须匹配多少比例才算匹配成功。默认为 0.6

最后的 results 变量包含了搜索结果,它是一个数组类型,每个元素都是一个匹配成功的原本对象数据。

高级用法

除了上面的基本用法之外,@gasbuddy/fuzzy-search 还提供了一些高级用法。

按照多个字段进行搜索

我们可以通过传入多个字段名,来增强模糊搜索的效果。例如下面的代码:

-- -------------------- ---- -------
----- ------- - -
  -------------- ------
  ----- -----
  ----- -------- ---------------
  ---------- ----
--

----- ---- - -
  - ----- ------ ------------ -- ----------- ---------- ---------- --
  - ----- -------- ------------ -- ---------- ------- --- -------- ---- ----------- --
  - ----- ---------- ------------ -- -------- --- -------- ------ --- ------- --- ------------- --
--

----- ------- - ------------------------- ----- ---------
---------------------
-- ---
-- -
--   - ----- ------ ------------ -- ----------- ---------- ---------- --
--   - ----- -------- ------------ -- ---------- ------- --- -------- ---- ----------- --
-- -

在上面的代码中,我们新增了一个 description 属性,并把它和 name 属性一起传给了 options.keys 字段。这样,搜索会同时检索这两个属性,并返回搜索成功的数据。

传入自定义的匹配函数

如果我们想要更加精细地控制搜索,可以传入自定义的匹配函数。这个匹配函数需要接收两个参数:搜索关键字和要匹配的目标字符串。在返回值中,true 表示匹配成功,false 表示匹配失败。

-- -------------------- ---- -------
----- ------- - -
  -------------- ------
  ----- -----
  ----- -------- ---------------
  ---------- ----
  -------- -------- ------- -- -
    ----- -------------- - ------------------------- - ---
    ----- ----------- - ------ --- -------
    ------ -------------- -- -------------
  --
--

----- ---- - -
  - ----- ------ ------------ -- ----------- ---------- ---------- --
  - ----- -------- ------------ -- ---------- ------- --- -------- ---- ----------- --
  - ----- ---------- ------------ -- -------- --- -------- ------ --- ------- --- ------------- --
--

----- ------- - ------------------- ----- ---------
---------------------
-- ---
-- -
--   - ----- -------- ------------ -- ---------- ------- --- -------- ---- ----------- --
-- -

在上面的代码中,我们新添加了一个 matchFn 函数。这个匹配函数的作用是,只要目标字符串的第一个字符匹配成功,且不是完全匹配,就算匹配成功。

其它用法

@gasbuddy/fuzzy-search 还提供了其它一些用法,例如:

  • async 方法:支持异步搜索数据。方法返回一个 Promise 类型。
  • cancel 方法:可以取消异步搜索。
  • customSort 函数:支持自定义搜索结果排序方式。

如果你对这些进阶用法感兴趣,可以前往官方文档查看详细资料。

总结

本文主要介绍了 @gasbuddy/fuzzy-search 这个 npm 包的安装和基本用法,以及一些高级用法,如按照多个字段进行搜索、传入自定义的匹配函数等。通过学习本文,相信读者已经能够掌握这个工具包并提高搜索开发效率。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066b5c51ab1864dac670c8

纠错
反馈