由 AI 驅動的混合搜尋目前處於封閉測試階段。 加入候補名單 以取得搶先體驗!

前往首頁Meilisearch 的標誌
返回文章
2022 年 4 月 25 日

如何使用 Meilisearch 將相關搜尋整合至 Strapi v4

建立強大、以搜尋為基礎的 Web 應用程式的逐步指南:從設定 Strapi 後端到將其與 Meilisearch 連接。

Carolina Ferreira
Carolina Ferreira開發人員倡導者 @ Meilisearch@CarolainFG
How to integrate a relevant search into Strapi v4 using Meilisearch

本教學將示範如何將 Meilisearch 與 Strapi v4 整合,以建立以搜尋為基礎的 Web 應用程式。我們將使用 Strapi 的快速入門指南來建立餐廳集合,然後使用 Meilisearch 搜尋我們的集合資料。

介紹我們的工具

什麼是 Strapi?

Strapi 是一個無頭 CMS。它提供了一種快速建立後端的方法,我們可以在其中新增和儲存資料。然後,這些資料可透過 REST 或 GraphQL API 使用,而無需編寫任何程式碼或設定我們的資料庫。

什麼是 Meilisearch?

Meilisearch 是一個快速、開源的搜尋引擎,易於使用和部署。Meilisearch 的目標是以非常少的步驟建立開箱即用的相關搜尋體驗,無需任何設定。

整合 Meilisearch 和 Strapi 的先決條件

為了能夠依照本教學進行 Strapi 和 Meilisearch 整合,您需要以下項目

為我們的應用程式建立目錄

讓我們建立一個名為 my-app 的目錄,我們將在其中新增應用程式的後端和前端部分。

mkdir my-app
cd my-app

使用 Strapi 建立後端

我們的第一步是使用 Strapi 產生後端 API。前往您開啟的終端機視窗並執行下列命令

npx create-strapi-app@latest back --quickstart

此命令會在名為 back 的新目錄中建立 Strapi 應用程式,並開啟管理儀表板。建立帳戶或登入,以便您能存取它。

Strapi signup form

建立帳戶後,您應該會被重新導向至 Strapi 的管理儀表板。這是我們將設定後端 API 的地方。

我們的下一步是建立新的集合類型。集合就像您的內容的藍圖,在本例中,它將是餐廳的集合。我們稍後將建立另一個名為「類別」的集合來組織我們的餐廳。

Strapi dashboard with side menu 'Content-Type Builder' option circled

若要繼續進行,請完成Strapi 快速入門指南中「B 部分:建置您的內容」的前 4 個步驟。這些將包括

  • 建立集合類型
  • 建立新項目
  • 設定角色和權限
  • 發佈內容

完成 Strapi 快速入門指南的步驟 4 後,兩個名為 RestaurantCategory 的新集合應該已出現在 Content Manager > Collection Types 下方。如果我們按一下 Restaurant,我們可以看到只有一個。讓我們按一下儀表板右上角的 + Create new entry 按鈕來新增更多!

Strapi dashboard: Content manager side menu, arrow indicating the location of the Restaurant Collection Type

我們將逐一新增三間餐廳。對於每間餐廳,您都需要按 Save,然後按 Publish

  • 名稱:The Butter Biscotte. 描述:All about butter, nothing about health.
    讓我們在頁面右下角新增 French food 類別 👇

Strapi dashboard: create an entry form, arrow indicating the location of the categorie's location in the right side menu

名稱:The Slimy Snail 描述:Gastronomy is made of garlic and butter. 類別:French food

名稱:The Smell of Blue 描述:Blue Cheese is not expired, it is how you eat it. With a bit of butter and a lot of happiness. 類別:French food

新增三間餐廳後,您應該會看到以下頁面

Strapi dashboard: list of the existing restaurant entries in the Restaurant Collection Type page

我們的 Strapi 後端現在已啟動並執行!Strapi 會自動為我們的 Restaurants 集合建立 REST API。請查看 Strapi 的文件,了解所有可用的API 端點

現在,是時候將 Meilisearch 引入其中了。

安裝並啟動 Meilisearch

若要將 Meilisearch 整合至我們基於 Strapi 的 Web 應用程式,您首先需要安裝 Meilisearch。有多種下載和執行 Meilisearch 執行個體的方法,我們將在此處使用Docker

如果您想要避免本機安裝,請試用 Meilisearch Cloud,這是一個託管且完全管理的 Meilisearch 版本,提供 免費 14 天試用,無需信用卡

開啟第二個終端機視窗並移至 my-app 目錄。此視窗將用於執行 Meilisearch。執行下列命令以下載並使用 Docker 安裝 Meilisearch。如果 Docker 對您不起作用,請考慮嘗試其他許多其他方法之一。

# Fetch the latest version of Meilisearch image from DockerHub
docker pull getmeili/meilisearch:latest

# Launch Meilisearch
docker run -it --rm 
    -p 7700:7700 
    -e MEILI_ENV='development' 
    -v $(pwd)/meili_data:/meili_data 
    getmeili/meilisearch:latest

您應該會看到一大段文字(包括一些 ASCII 圖案),確認 Meilisearch 已啟動並執行。

Meilisearch startup message, arrow pointing the location of the address

找到標題為 Server listening on 的行。這讓我們知道 Meilisearch 的服務位置。找到後,請在您的瀏覽器中開啟此位址。

Meilisearch search preview, aka, mini-dashboard

這是 Meilisearch 的搜尋預覽。在我們將一些資料新增至 Meilisearch 執行個體之前,它將保持空白。

是時候連線 Strapi 和 Meilisearch,並開始搜尋我們的資料了。

連線 Strapi 和 Meilisearch

為了將 Meilisearch 外掛程式新增至 Strapi,我們需要結束我們的 Strapi 應用程式。前往執行 Strapi 的終端機視窗(確定它不是執行 Meilisearch 的視窗!),並按下 Ctrl+C 以終止程序。

完成後,在 back 目錄中安裝外掛程式。

cd back
npm install strapi-plugin-meilisearch

安裝後,我們必須重建 Strapi 應用程式,然後以開發模式再次啟動它,因為這樣可以讓設定更容易。

npm run build
npm run develop

此時,我們的 Strapi 應用程式應該會在預設位址再次執行:https://127.0.0.1:1337/admin/。在您的瀏覽器中瀏覽它,您應該會看到管理員登入頁面;輸入與之前相同的憑證。

連線後,您應該會在螢幕左側看到新的 meilisearch 外掛程式。

Strapi dashboard with plugins side menu: arrow pointing at the 'meilisearch' option

若要新增您的 Meilisearch 憑證,請按一下 meilisearch 外掛程式頁面上的 Settings 索引標籤,以便 Strapi 知道將資料傳送到哪裡。

例如,使用上方 啟動並開始 Meilisearch 區段的憑證,在 Meilisearch Host 欄位中新增提供 Meilisearch 的位址,然後按一下 Save 按鈕。

Strapi dashboard with Meilisearch plugin selected: arrow pointing to the location of the settings tab

請注意,我們將 Meilisearch API 金鑰 留空,因為我們在啟動 Meilisearch 時沒有主金鑰

現在是時候將您的 Strapi 集合新增至 Meilisearch 了。在 meilisearch 外掛程式頁面上的 Collections 索引標籤中,您應該會看到 restaurantcategory 內容類型。

按一下 restaurant 旁邊的核取方塊,內容類型會自動在 Meilisearch 中建立索引。

GIF showing the mouse clicking on 'restaurant' in the Meilisearch collections tab

如您在上方 GIF 動圖中所見,當您在Collections(集合)標籤中點擊餐廳的核取方塊時,會出現「Hooked」(已連結)字樣。這表示每次您在餐廳內容類型中新增、更新或刪除條目時,Meilisearch 都會自動更新!

一旦索引建立完成,您的餐廳就會在 Meilisearch 中。現在我們可以回到 Meilisearch 主機位址:https://127.0.0.1:7700。重新整理後,您應該會看到頁面不再是空白的。試著在搜尋列中輸入「butter」(奶油),看看會發生什麼事 😉

GIF showing the word 'butter' being typed in the search bar and search results appearing instantly

如您所見,您的 Strapi 條目會直接發送到 Meilisearch。您可以在發送到 Meilisearch 之前修改資料,例如刪除某個欄位。請查看 strapi-plugin-meilisearch 頁面上的所有自訂選項。

整合 Strapi 和 Meilisearch 後的後續步驟

現在您已成功將 Strapi 集合新增到 Meilisearch,您可以開始充分利用其搜尋功能

了解如何[設定 instant-meilisearch](/blog/instant-meilisearch/ ),在短時間內將邊打字邊搜尋的體驗整合到您的前端!

如果您對將 Meilisearch 與 Strapi 整合有任何疑問,請在 Discord 上加入我們。如果您喜歡 Meilisearch,請在 GitHub 上給我們一個星星,這對我們意義重大。

How to add AI-powered search to a React app

如何在 React 應用程式中加入 AI 驅動的搜尋功能

使用 Meilisearch 的 AI 驅動搜尋功能,建立一個 React 電影搜尋和推薦應用程式。

Carolina Ferreira
Carolina Ferreira2024 年 9 月 24 日
Build your Next.js Shopify storefront with Blazity

使用 Blazity 建立您的 Next.js Shopify 店面

了解如何使用 Next.js 和 Blazity 商務啟動器建立 Shopify 店面。

Laurent Cazanove
Laurent Cazanove2024 年 8 月 19 日
Meilisearch 1.8

Meilisearch 1.8

Meilisearch 1.8 帶來了負關鍵字搜尋、搜尋強健性和 AI 搜尋的改進,包括新的嵌入器。

Carolina Ferreira
Carolina Ferreira2024 年 5 月 7 日