在现代网站中,全文搜索已经成为了一个很常见的功能需求。但是,在搜索数据量稍微大一点的情况下,单纯的 SQL 查询已经无法胜任。此时,一些全文搜索引擎,比如 Elasticsearch 或者 Solr,可能是较好的选择。但是,如果你的数据量并不大,使用一个新的搜索引擎可能会增加不必要的复杂度和学习成本。在这种情况下,使用 Hapi.js 和 MongoDB 实现一个简单的全文搜索引擎也是一种不错的选择。
步骤
在开始之前,请确保你已经安装好了 Node.js 和 MongoDB。
1. 准备数据
假设我们有一些博客文章,我们希望对这些文章进行全文搜索。为简单起见,在本文实现中,我们假定我们已经从外部获取了文章的文本内容,并将其保存在 MongoDB 中。每篇文章都存储在一个名为 articles
的 MongoDB 集合中,如下所示:
{ "title": "这是一篇博客文章的标题", "content": "这是一篇博客文章的正文", "createdAt": "2022-06-01T12:30:00.000Z" }
为了进行全文搜索,我们需要在 content
字段上创建一个索引:
db.articles.createIndex({ content: "text" });
2. 创建 Hapi.js 应用程序
现在,我们开始创建一个 Hapi.js 应用程序。我们需要使用 hapi
和 hapi-mongodb
模块。在这个例子中,我们还将使用 inert
模块和 handlebars
模板引擎来呈现搜索结果。首先,创建一个 package.json
文件:
{ "dependencies": { "hapi": "^19.2.0", "hapi-mongodb": "^8.0.0", "inert": "^6.0.1", "handlebars": "^4.2.0" } }
然后,安装这些依赖:
npm install
接下来,创建一个名为 index.js
的文件,编写以下代码:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ----- - ----------------- ----- ---------- - ---------------------- ----- - ----------- - - ------------------- ----- ------ - ------------- ----- ----- ----- ------------ --- ----- ----- - ----- -- -- - ----- ----------------------- -------------- ------- ------ ----- ---- -------- - ----- -------- -- --- -------------- ------- ------- ----- ---------- -------- ----- --------- -- -- - ----- - ----- - - ---------------- ----- ------ - ----- ------------------------------------------------- ----- -- - ------------------ ----- -------- - -------------------------- ----- ------ - ----- --------------- ------ - -------- ----- -- --- ----- ---- - ----- ----------------- ----- --------------- ------ ---------------- - ------ -------- ----- --- -- --- -------------- -------- - ----- ----------- -- ----------- ---------- ----- -------- --- ----- --------------- ------------------- ------- --- --------------------- -- -------------------------------- ----- -- - ----------------- ---------------- --- --------
3. 创建 HTML 模板
现在,我们需要创建两个 HTML 模板文件,一个用于显示搜索表单,另一个用于显示搜索结果。在项目的根目录下,创建一个名为 views
的目录,并在其中创建两个 .html
文件。
index.html
的内容如下:
-- -------------------- ---- ------- --------- ----- ----- ---------- ------ ----- ---------------- -------------- ------------ ------- ------ ----------- --------- ----- ------------- ----------------- ------- --- ------ ----------- ------------ --------- -------- ------- ------------------------- ------- ------- -------
search.html
的内容如下:
-- -------------------- ---- ------- --------- ----- ----- ---------- ------ ----- ---------------- -------------- ------------ ------- ------ ------------- ------------------ ------------------ -------- ---- ------- --------- ---- ----------------------- ----------------------- ---------- -------------------------- ----- --------- ----- ------- -------
4. 运行应用程序
现在,运行应用程序:
node index.js
在浏览器中打开 http://localhost:3000
,你应该能够看到一个搜索表单。输入一些关键字并提交表单,你应该能够看到与关键字匹配的搜索结果。
总结
在这篇文章中,我们使用 Hapi.js 和 MongoDB 实现了一个简单的全文搜索引擎。虽然这个搜索引擎并不是最快的、最强大的,但是它非常容易理解和实现,适合处理中等规模的数据集。除了 MongoDB,你还可以使用其他文本搜索引擎,例如 ElasticSearch 或者 Solr,以获得更好的性能和功能。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6493bfde48841e989415d3ca