介绍
minisearch 是一个基于 JavaScript 的轻量级文本搜索引擎,可用于在前端应用中实现搜索功能。相比于其他搜索引擎,它的体积更小、速度更快、使用也更简单。
在应用中使用 minisearch,可以将搜索的数据存在内存中,减少了请求后端的次数,提升了性能。同时,它也支持多字段搜索,并可以设置搜索结果的权重,达到更精准的搜索效果。
在本文中,我们将介绍 minisearch 的安装、基本用法和高级应用,帮助读者了解如何使用这个库来实现搜索功能。
安装
从 npm 中安装 minisearch:
npm install minisearch
或者从 CDN 中导入 minisearch:
<script src="https://cdn.jsdelivr.net/npm/minisearch/dist/minisearch.min.js"></script>
基本用法
我们先来看一个简单的例子,定义一个搜索引擎处理文本:
-- -------------------- ---- ------- ----- ---- - - - --- ---- ------ -------- -------- ------ ------- --------- -- - --- ---- ------ --------- -------- --------- ------ ------- ------ ---------- -- - --- ---- ------ ------------ -------- --------- ------- ----- - -- ----- ------------ - --- ------------ ------- --------- ----------- ------------ --------- ---------- --- -------------------------- ----- ------- - ----------------------------- ---------------------
在上面的例子中,我们创建了一个 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