随着互联网的发展,全文搜索越来越成为用户使用产品的必需功能。在网站、APP 中,全文搜索已成为标配功能,能够快速定位到用户需要的内容。然而,对于网站开发者来说,如何在后端实现高效的全文搜索并不是一件容易的事情。本文将重点介绍在 Express.js 中使用 MongoDB 进行全文搜索的方法,并附有详细的示例代码。
一、简述 MongoDB 的全文检索
MongoDB 是一个开源的 NoSQL 文档数据库,旨在为企业级传统数据库提供一种更加敏捷的开发方式。在 MongoDB 中,全文检索需要使用文本索引或者搜索引擎来实现。MongoDB 中的文本索引是一个存储在集合中的特殊表格,用来支持全文搜索(text search)和自然语言处理(natural language processing)。MongoDB 4.2 版本开始,推出了全文检索的新特性——使用搜索引擎 (Elasticsearch) 实现全文检索。具体来说,搜索引擎通过词条分析器(analyzer)将查询语句拆分成多个词条,并匹配文档中对应词条的权重,最终输出相关度较高的文档。
二、安装和配置 MongoDB
在使用 MongoDB 进行全文搜索前,需要确保本地已经安装了 MongoDB 数据库,可参考官方文档进行安装配置:https://docs.mongodb.com/manual/installation/
安装完成后,需要配置数据库并为特定的集合建立文本索引,以便在 Express 中使用全文搜索的功能。
- 连接 MongoDB :
const MongoClient = require('mongodb').MongoClient; const uri = 'mongodb://localhost:27017'; const client = new MongoClient(uri, { useNewUrlParser: true }); client.connect(err => { const collection = client.db("TEST").collection("ARTICLE"); // perform actions on the collection object client.close(); });
- 建立全文索引:
在 MongoDB 3.0 版本之后,为特定集合建立全文索引需要使用 createIndex 命令。下面是一个示例,你可以根据你的项目具体情况进行修改:
-- -------------------- ---- ------- ----- ----------- - ------------------------------- ----- --- - ---------------------------- ----- ------ - --- ---------------- - ---------------- ---- --- ------------------ -- - ----- ---------- - ---------------------------------------- -- ------ ----- - ------- --------- ------------------------ ------ ------- -------- ------ -- ------------- ------- - -------------------- --- --------------- ---
建立成功后,可通过命令行查看该集合的索引情况:
db.article.getIndexes();
三、在 Express 中使用 MongoDB 进行全文搜索
完成了 MongoDB 的安装和配置后,我们可以愉快地开始在 Express 中使用全文搜索的功能。在以下示例中,我们将通过 Express 连接 MongoDB 数据库,搜索文章并返回结果。
-- -------------------- ---- ------- ----- ------- - ------------------- ----- --- - ---------- ----- ----------- - ------------------------------- ----- --- - ---------------------------- ----- ------ - --- ---------------- - ---------------- ---- --- -- -------- ------------ ----- ---- -- - -------------------- -- - ----- ---------- - ---------------------------------------- ------------------------------- ----- -- - --------------- --- --- --- -- ---- --------------------------- ----- ---- -- - -------------------- -- - ----- ---------- - ---------------------------------------- ----------------- ------ - -------- ------------------ - ---------------- ----- -- - --------------- --- --- --- ---------------- -- -- ------------------- ------- -- ---- --------
代码解释:
- 通过
MongoClient
连接到 MongoDB 数据库。 - 在首页加载所有文章时,查询该集合并返回所有数据。
- 在搜索操作中,使用
$text
和$search
对数据进行全文搜索,并通过toArray
返回符合条件的数据集。
四、总结
通过本文的学习,我们了解了 MongoDB 的全文检索机制,以及如何在 Express 中使用全文搜索。全文搜索功能在网站、APP 等较大型项目中十分常见和重要,可以快速为用户提供所需的信息,增加产品的用户体验。但是在实践过程中,仍需注意数据库配置和优化等问题,以保证该功能在生产环境中的稳定性和高效性。
完整示例代码可在 Github 上获取。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a3c69948841e989402aebf