npm 包 @tsimons/gatsby-plugin-elasticlunr-search 使用教程

阅读时长 4 分钟读完

最近在做一个 Gatsby 站点项目的时候,需要实现一个全站搜索的功能。在网上查找了相关的方案后,决定使用 @tsimons/gatsby-plugin-elasticlunr-search 这个 npm 包来实现搜索。

什么是 @tsimons/gatsby-plugin-elasticlunr-search?

@tsimons/gatsby-plugin-elasticlunr-search 是 Gatsby 的一个插件,用于实现 Gatsby 站点的全站搜索。它基于 Elasticlunr 搜索库实现,使用 JavaScript 编写,支持模糊搜索和多条件查询等多种搜索方式。

具体的使用方法是,该插件会通过 Gatsby 钩子将站点的页面数据加载到内存中,并生成一个搜索索引。然后,通过搜索关键词来匹配索引中的数据,并返回符合条件的结果。

如何使用 @tsimons/gatsby-plugin-elasticlunr-search?

首先,我们需要安装 @tsimons/gatsby-plugin-elasticlunr-search,使用以下命令可以安装:

然后,在 Gatsby 的配置文件中添加该插件,示例代码如下:

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

配置项说明:

  • fields:需要索引的字段名称,这里我们指定了 titledescriptionpath 三个字段,即文章标题、描述和路径。
  • filter:过滤搜索结果的方法,这里我们示例中的代码过滤了节点的 frontmatter.type 字段不为 secret 的节点。

接下来,在需要进行搜索的页面中,我们可以通过 useSearch hook 来获取搜索结果。示例代码如下:

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

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

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

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

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

这里我们定义了一个 SearchPage 组件,其中使用了 useSearch hook 来获取搜索的索引。然后通过输入框的值来触发搜索,并将搜索结果展示在页面上。

总结

通过本文的介绍,我们学习了如何使用 @tsimons/gatsby-plugin-elasticlunr-search 来实现 Gatsby 站点的全站搜索。同时,我们也了解了该插件的基本使用方法和配置项,以及如何在页面中使用 useSearch hook 来获取搜索结果。希望本文对大家在实现类似功能时有所帮助。

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

纠错
反馈