当前位置:首页 > 编程语言 > 正文内容

为Web应用添加Meilisearch全文搜索支持

a811625532年前 (2023-12-28)编程语言14

电子商务平台到 (CMS), *** 应用程序会生成和处理大量数据。从这些数据中高效提取相关信息对于实现无缝的用户体验至关重要。因此,使用逐字查询匹配的传统搜索功能是不够的。您需要的是全文搜索。

全文搜索可以检查文档或数据库的完整内容,让您可以根据特定的单词或短语从大型数据集中检索相关信息。它考虑了出现频率和多语言内容等因素,从而获得更准确、更全面的搜索结果。

是这类搜索引擎中的佼佼者,它利用全文搜索的强大功能,为开发人员和最终用户提供了灵活而强大的工具。

本教程演示如何将 Meilisearch 集成到 Web 项目中。

什么是 Meilisearch?

Meilisearch 是一个搜索引擎,可为最终用户提供快速、相关的搜索结果。它不允许出现错字,默认设置可满足大多数项目的需要。

Meilisearch 还具有很强的可定制性,提供了许多调整搜索结果相关性的功能。在这些功能中,最值得注意的是,您可以根据自己的项目进行调整。

它提供直观的 ,可无缝集成到几乎任何企业网站中。您可以自行托管,也可以使用其官方云托管解决方案 Meilisearch Cloud,轻松快速地开始使用。本教程使用 。

前提条件

要继续学习,您需要:

  • 在计算机上安装
  • 一个 Node.js 项目。您可以使用 。

如何设置 Meilisearch

浏览 Meilisearch Cloud,创建账户或登录。确保确认电子邮件地址。

接下来,点击 “Create a project“,一个运行 Meilisearch 实例的服务器,你将在其中添加网站的数据集。

添加 Project name(例如,book-app)并选择您喜欢的地区。然后点击 Create。创建项目后,您可以单击 “Settings” 查看项目的详细信息,如访问数据集的 URL、保护 Meilisearch 实例的 API 密钥以及其他信息。

books-app 项目概览页面。

有三个 API 密钥,每个密钥代表:

  • Master key – 此密钥可解锁所有路由,也是唯一可访问端点以创建和删除 API 密钥的密钥。只有使用主密钥才能在受保护的环境中管理 API 密钥。
  • Default Search API key – 该密钥只允许访问。可以在客户端代码中使用。
  • Default Admin API key – 该密钥可访问除 /keys 之外的所有 API 路由,后者用于创建和删除 API 密钥。您只能在受保护的环境中使用此密钥。

如何使用 Meilisearch 编制数据索引

索引是存储和组织可搜索数据的核心组件。它们充当文档的容器 – 包含一个或多个字段的对象。

Meilisearch中的每个索引都是独立和可定制的,允许个性化的搜索排序规则和过滤选项。

如何创建索引和添加文档

  1. 在导航栏中,单击项目中的 Indexes 选项卡。
  2. 单击 Create an index。然后,输入索引名称(例如,书籍)并单击 Create index
  3. 选择导入文档的方式。本指南将导入一个 *** ON 文件,其中包括来自 的 13 个图书条目。
  4. 单击 File upload 并上传 *** ON 文件,然后 Import documents

注:每个文档都必须有一个包含 的主字段,主键是所有文档中都必须存在的具有唯一值的属性。在大多数情况下,这个值就是文档 ID。如果主键不存在,文档将无法成功上传。

如何更新和删除文档

Meilisearch Cloud 目前不提供修改或删除文档的 *** ,但您可以使用 REST API 路由或 SDK。下面的代码演示了如何使用 REST API 端点更新或删除文档。本教程使用 cURL 来处理路由,但你也可以使用像 Postman 这样的 API 平台。

1. 要更新文件,请按以下路由发送 PUT 请求:

/indexes/{index_uid}/documents

上面的 index_uid 是项目的索引名称:

 

突出显示索引名称。

2. 使用此路由,可以添加或更新已存在的文档列表。要更新文档,必须附加其主键。旧文档会根据新文档中的字段进行部分更新。以下是一个示例,说明如何将图书索引中文档的标题从 JavaScript for Kids 更新为 JavaScript Coding for Kids ,并添加 publisher 字段:

curl \
-X PUT '/indexes/books/documents' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer ' \
--data-binary '[
{
"id": "71nDBQAAQBAJ",
"title": "JavaScript Coding for Kids",
"publisher": "No Starch Press"
}
]'

3. 将 <your-project-url><your-admin-api-key> 替换为 Project overview 页面中的相应值:

"taskUid": 26, "indexUid": "books", "status": "enqueued", "type": "documentAdditionOrUpdate", "equeuedAt": "2023-05-26T07:52:24.127920065Z"

4. 在删除文档方面,Meilisearch 包括三个路由(端点):

/indexes/{index_uid}/documents // Deleting all documents
/indexes/{index_uid}/documents/{document_id} // Deleting a single document
/indexes/{index_uid}/documents/delete-batch // Deleting a selection of  
documents

您可以从 MeiliSearch Cloud 或您的数据库中获取文档后,从 books.json 文件的原始数据中获取 document_id

下面是如何删除上述更新的图书的示例:

curl \
-H 'Authorization: Bearer ' \
-X DELETE '/indexes/books/documents/71nDBQAAQBAJ'

发送请求后,您的回复应该如下所示:

"taskUid": 10, "indexUid": "books", "status": "enqueued", "type": "documentDeletion", "equeuedAt": "2023-05-26T07:20:11.1291066"

如何将 MeiliSearch 添加到 *** 服务中

1. 首先,在终端运行以下命令,从 GitHub 克隆启动项目:

git clone https://github.com/Tammibriggs/meilisearch-app.git
cd meilisearch​-app
npm install

如果检查 package.json 文件,应该会看到 start 命令。运行 npm start 在 localhost port3000 上运行 Node.js 项目。在浏览器中输入 http://localhost:3000/ 时,应该会看到以下内容:

 

Meilisearch 演示启动程序。

2. 应用程序启动并运行后,就可以添加 Meilisearch,这样搜索表单在提交时就会开始返回来自 Meilisearch 的结果。为此,请在终端执行以下命令安装 Meilisearch:

npm install meilisearch

3. 您还需要安装 npm 软件包,以便从 .env 文件加载敏感凭据。在终端运行以下命令

npm install dotenv

4. 在项目根文件夹中创建一个 .env 文件,并添加以下内容:

YOUR_PROJECT_URL= '<your-project-url>'
YOUR_SEARCH_API_KEY= '<your-admin-api-key>'

确保将 <your-project-url><your-admin-api-key> 替换为相应的值。

5. 接下来,在 server.js 文件中导入 meilisearchdotenv 软件包,并配置 dotenv

import {MeiliSearch} from 'meilisearch'
import dotenv from 'dotenv';
dotenv.config();

6. 然后,初始化 Meilisearch,这样你就可以开始处理你的 books-app 项目了。导航到 server.js 文件,在 searchValue 变量定义后添加以下代码:

const client = new MeiliSearch({ host: process.env.YOUR_PROJECT_URL, apiKey: process.env.YOUR_SEARCH_API_KEY })

7. 其中一项重要功能是在提交表单时,使用附加到 URL 的搜索值在 Meilisearch 中搜索图书索引。要启用此功能,请在 client 变量定义后添加以下代码:

const index = client.index('books')  
const searchResults = !!searchValue && await index.search(searchValue)

这段代码会创建一个图书索引的引用。然后,如果您定义了 searchValue,它将使用 search() *** 在图书索引中搜索与搜索值相匹配的文档。

8. 最后,修改 render() *** 如下,以显示搜索结果:

res.render('index', {
books: searchResults ? searchResults.hits : [],
searchValue
})

现在您可以开始搜索图书索引了:

使用搜索表单搜索 “books” 索引

9. 添加上述代码后,您的 server.js 文件应如下所示:

import express from 'express';
import { MeiliSearch } from 'meilisearch';
import dotenv from 'dotenv';
dotenv.config();
const app = express();
const PORT = process.env.PORT || 3000;
app.set('view engine', 'ejs');
app.use(express.static('public'));
app.get('/', async (req, res) => {
const searchValue = req.query.search;
const client = new MeiliSearch({
host: process.env.YOUR_PROJECT_URL,
apiKey: process.env.YOUR_SEARCH_API_KEY,
});
const index = client.index('books');
const searchResults = !!searchValue && (await index.search(searchValue));
res.render('index', {
books: searchResults ? searchResults.hits : [],
searchValue,
});
});
app.listen(PORT, () => {
console.log(`listening at http://localhost:${PORT}`);
});

您可以。

小结

Meilisearch 是一款出色的搜索引擎解决方案,可增强网站的搜索功能和用户体验。其卓越的速度、以相关性为重点的排名算法和无缝集成过程使其成为优化网站搜索功能的宝贵工具。

您的项目依赖哪种搜索引擎?请在评论区告诉我们!

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://2345hao.cn/blog/index.php/post/8151.html

分享给朋友:

“为Web应用添加Meilisearch全文搜索支持” 的相关文章

宝塔面板教程之面板设置篇

宝塔面板教程之面板设置篇

宝塔面板设置主要涉及的是宝塔控制后台自身的参数,包括诸如面板的开关、自动更新及SSL、面板端口设置等。虽然这部分不涉及服务器自身的管理,但对宝塔面板的设置也有其重要。 特别是面板端口、安全入口及面板密码等涉及安全的参数设置。 启动和关闭面板 如果你长时间无需使用到宝塔面板,可以考虑...

27个学习PHP的最佳教程(免费和付费资源)

27个学习PHP的最佳教程(免费和付费资源)

对于初学者和那些刚刚进入WordPress开发的人来说,PHP是您可以开始的最佳起点之一。这是一种超级简单直接的语言,使其成为之一,因此相当容易上手,它构成了在线开发的支柱。另外,如果你想在WordPress后端工作,你肯定需要学习它。 但是,如果您不想在昂贵的大学课程上花费数月或数年时间怎么...

20个最佳Laravel免费和付费教程资源

20个最佳Laravel免费和付费教程资源

Laravel多年来一直是PHP应用程序开发的摇滚明星,这是有充分理由的。庞大的生态系统、活跃的社区、强大的就业市场、成功的初创公司——它拥有一切让采用新技术变得值得的东西。 如果你想学习Laravel,你不需要更进一步。通过浏览本指南,您可以找到最适合您的Laravel教程,与您的知识水平和...

正面对比Node.js与PHP

正面对比Node.js与PHP

Node.js和PHP是Web开发工作中常用的两种基本Web技术。两者都为服务器端开发做出了贡献,Node.js甚至同时服务于客户端和服务器端开发。 PHP已经为开发人员服务了近3年,现在它为78%的网络提供支持。相比之下,Node.js相对较新,但扩展速度非常快,由于其全栈开发能力而成为流行...

XaaS:一切皆服务模型(包含10个示例类别)

XaaS:一切皆服务模型(包含10个示例类别)

有时似乎有太多的商业首字母缩写词要记住。随着快速变化的技术进步和云计算的出现,新的类别将不断涌现。XaaS 就是这样一个最新的补充。 该领域的大多数读者都知道、和。但是你听说过XaaS吗? XaaS(一切皆服务)涵盖了一切:现在一切都可以成为服务。 这听起来好像很复杂的样子,但别担心——我...

什么是Tomcat服务器软件?

什么是Tomcat服务器软件?

Web服务器是您网站的重要组成部分。它们使您的内容可供尝试访问它的访问者使用。但是,您可能想知道:Tomcat是什么,它与其他服务器软件有何不同?幸运的是,我们整理了一份指南来回答这些问题(以及更多!)。 在这篇文章中,我们将仔细研究Tomcat及其工作原理。我们还将讨论它的优缺点,并向您展示...