npm 包 minisearch 使用教程

阅读时长 8 分钟读完

介绍

minisearch 是一个基于 JavaScript 的轻量级文本搜索引擎,可用于在前端应用中实现搜索功能。相比于其他搜索引擎,它的体积更小、速度更快、使用也更简单。

在应用中使用 minisearch,可以将搜索的数据存在内存中,减少了请求后端的次数,提升了性能。同时,它也支持多字段搜索,并可以设置搜索结果的权重,达到更精准的搜索效果。

在本文中,我们将介绍 minisearch 的安装、基本用法和高级应用,帮助读者了解如何使用这个库来实现搜索功能。

安装

从 npm 中安装 minisearch:

或者从 CDN 中导入 minisearch:

基本用法

我们先来看一个简单的例子,定义一个搜索引擎处理文本:

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

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

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

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

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

在上面的例子中,我们创建了一个 minisearch 的实例,并向其中添加了搜索数据。使用 search 方法可以搜索匹配的内容,并返回搜索结果。

其中,fields 表示要搜索的字段,可以指定多个字段。storeFields 表示要在搜索结果中存储的字段,也可以指定多个字段。

在搜索时,只要指定搜索关键字,即可获取匹配的内容。在上面的例子中,我们设置的关键字是 'Apple',则返回对象的 results 属性中包含了匹配的结果。

高级应用

多个 minisearch 实例

如果我们需要搜索的数据来自不同的分类,比如电子产品、服装、书籍,那么我们可以为每个分类创建一个 minisearch 的实例。这样可以保持搜索结果的清晰度,也更方便数据管理。

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

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

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

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

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

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

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

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

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

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

可以看到,我们根据不同的分类创建了三个 minisearch 实例,分别用于搜索电子产品、服装和图书。然后分别用实例搜索匹配的内容,并分别得到搜索结果。

搜索结果的排序

在搜索过程中,我们可以对搜索结果进行排序,以获得更加精确的搜索结果。在 minisearch 中,我们可以使用 search 方法的第二个参数来指定排序规则。

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

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

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

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

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

在上面的例子中,我们添加了一个 ranking 的字段用于存储搜索结果的权重,然后在搜索时,指定了排序规则为 ranking。这样返回的结果数组将按照 ranking 字段的值从高到低排序。

寻找匹配的部分内容

当我们搜索某个关键字时,有时候想要实现显示搜索结果中匹配的部分内容,比如搜索 'Android',希望在搜索结果中显示其匹配的 'Android' 部分。

可以使用 extract 方法来获取匹配的部分内容:

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

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

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

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

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

在上面的例子中,我们使用 extract 方法传入一个函数获取 content 字段的值,然后搜索 'Android' 只返回 content 匹配的结果。

结论

本文介绍了使用 JavaScript 的 minisearch 库实现搜索功能。我们学习了如何安装这个库,并用简单的例子讲解了它的基本用法。然后进一步探讨了如何在高级应用中,使用多个 minisearch 实例、搜索结果的排序、以及寻找匹配的部分内容等高级应用场景。

使用 minisearch 提供的 API 可让开发者更加轻松地实现搜索功能,在应用中得到更好的用户体验。

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

纠错
反馈