Meilisearch 安裝和使用教程

米开朗基杨發表於2024-07-01

如今搜尋功能已成為幾乎所有應用不可或缺的一部分。無論是電商平臺、內容管理系統,還是企業內部知識庫,使用者都期待能夠快速、準確地找到他們需要的資訊。然而,傳統的搜尋解決方案往往面臨著諸多挑戰:響應速度慢、相關性差、難以適應大規模資料、缺乏靈活性等。這些問題不僅影響使用者體驗,還可能導致使用者流失,最終影響業務增長。

那麼,有沒有一種搜尋引擎能夠兼顧速度、準確性、易用性和可擴充套件性呢?今天給大家推薦一款強大的開源搜尋引擎 - Meilisearch。

Meilisearch 簡介

Meilisearch 是一個強大的開源搜尋引擎,使用 Rust 語言編寫,提供了閃電般快速的全文搜尋功能,並且易於使用和整合。Meilisearch 旨在為開發者和終端使用者提供一個即時且相關性優先的搜尋體驗。

自2018年首次釋出以來,Meilisearch 憑藉其簡單易用的特性和卓越的效能,迅速在開源社群中脫穎而出。

一個優秀的搜尋引擎不僅要滿足開發者的需求,更要為終端使用者提供卓越的體驗。Meilisearch 的設計始終圍繞著以下核心理念:

  1. 速度至上:在任何規模的資料集上,都能在 50 毫秒內返回結果。
  2. 相關性優先:透過智慧排序演算法,確保最相關的結果總是排在前面。
  3. 開發者友好:提供直觀的 API 和豐富的文件,大大降低了整合和使用的門檻。
  4. 高度可定製:靈活的配置選項,允許開發者根據具體需求調整搜尋行為。

目前 Meilisearch 在 GitHub 上已經獲得了超過 40000 顆星。

Meilisearch 的殺手級特性

Meilisearch 提供了豐富多樣的搜尋功能,可以滿足從個人專案到大型企業應用的各種需求。核心功能如下:

搜尋效能

  • 閃電般的速度:無論資料集大小如何,都能在 50 毫秒內返回結果。
  • 即時搜尋:支援 “搜尋即輸入” (Search-as-you-type) 功能,提供實時反饋。
  • 拼寫容錯:智慧處理拼寫錯誤,即使查詢中存在錯誤也能返回相關結果。

相關性最佳化

  • 自定義排序:允許根據業務需求自定義搜尋結果的排序規則。
  • 分面搜尋:支援多維度的結果過濾和導航。
  • 同義詞管理:可以設定同義詞,提高搜尋的靈活性。

多語言支援

  • 多語言最佳化:針對多種語言進行了最佳化,包括中文、日文等非拉丁語系。
  • 停用詞處理:可配置停用詞列表,忽略對搜尋結果影響不大的常見詞。

高階功能

  • 地理位置搜尋:支援基於地理位置的搜尋和排序。
  • 多租戶支援:透過租戶令牌實現資料隔離和訪問控制。
  • 高亮顯示:在搜尋結果中高亮顯示匹配的文字。
  • 文件管理:支援新增、更新和刪除索引中的文件。

開發者友好

  • RESTful API:提供簡潔明瞭的 API,易於整合。
  • 多語言 SDK:官方提供多種程式語言的 SDK。
  • 文件詳細:提供全面的文件和示例。
  • 可自託管:支援在自己的基礎設施上部署和管理。

Meilisearch vs. 其他搜尋解決方案

為了更直觀地展示 Meilisearch 的優勢,我們可以將其與市面上的其他主流搜尋解決方案進行對比:

特性 Meilisearch Elasticsearch Algolia
響應速度 <50ms 因環境和配置而異,通常>100ms <100ms
易用性
自動錯誤糾正 需配置
多語言支援 優秀 良好 優秀
地理位置搜尋 支援 支援 支援
開源 是(部分功能閉源)
定價 免費(自託管) 免費(自託管),付費雲服務 付費 SaaS

雖然 Elasticsearch 在功能全面性和生態系統方面略勝一籌,Algolia 則在雲服務和開箱即用體驗上有優勢,但 Meilisearch 在速度、易用性和開源友好度上獨樹一幟。特別是對於中小型專案和希望完全控制搜尋基礎設施的團隊來說,Meilisearch 提供了一個完美的平衡點。

Meilisearch 的安裝使用

Meilisearch 的安裝和使用相對簡單,提供了多種安裝方式以適應不同的環境和需求。

對於沒有技術背景的同學而言,你也不用擔心安裝問題,Sealos 應用商店提供了一鍵部署的應用模板,點一下滑鼠即可完成部署,非常絲滑。

如果你想快速部署一個 Meilisearch,又不想陷入繁瑣的安裝和配置過程,可以試試 Sealos。

直接開啟 Meilisearch 應用模板,然後點選右上角的 “去 Sealos 部署”。

如果您是第一次使用 Sealos,則需要註冊登入 Sealos 公有云賬號,登入之後會立即跳轉到模板的部署頁面。

這裡有兩個關鍵的環境變數需要特別注意一下,正確配置這些變數可以確保您的 Meilisearch 的安全和效能。

  1. MEILI_ENV:用於配置例項的環境,只能是 productiondevelopment

    production 模式:

    • 禁用了搜尋預覽介面。

    development 模式:

    • 啟用了搜尋預覽功能。
  2. MEILI_MASTER_KEY:用於設定 Meilisearch 的主金鑰,它會自動保護除 GET /health 之外的所有路由。只有透過 API 金鑰才能訪問其他端點,包括搜尋預覽介面。

    在 production 模式下:

    • 提供主金鑰是強制性的。
    • 如果沒有提供主金鑰或金鑰長度小於 16 位元組,Meilisearch 將丟擲錯誤並拒絕啟動。

    在 development 模式下:

    • 提供主金鑰是可選的。
    • 如果沒有提供主金鑰,所有路由將不受保護且可公開訪問。

無論在哪種模式下,如果你沒有提供主金鑰或提供的金鑰長度小於 16 位元組,Meilisearch 都會建議你使用一個自動生成的主金鑰。

總結一下:如果是 production 模式,則必須要提供主金鑰;如果是 development 模式,則可以不提供主金鑰。

金鑰的生成非常簡單,直接在 Linux 或者 macOS 終端裡執行以下命令即可生成一個隨機金鑰:

openssl rand -base64 48

填好引數之後,點選右上角的 “部署應用” 開始部署。

部署完成後,直接點選應用的 “詳情” 進入該應用的詳情頁面。

等待應用狀態變成 running 之後,直接點選外網地址便可開啟 Meilisearch 的搜尋預覽介面。

開啟之後是這個樣子的,輸入你設定的金鑰,就可以訪問了。

除此之外,還有另外一種開啟方式,先重新整理 Sealos 桌面 (也就是在 bja.sealos.run 介面重新整理瀏覽器),然後你就會發現 Sealos 桌面多了個圖示:

直接點選這個圖示就可以開啟 Meilisearch 的搜尋預覽介面了。

是不是有點似曾相識?沒錯,很像 Windows 的快捷方式!

單機作業系統可以這麼玩,Sealos 雲作業系統當然也可以這麼玩。

Meilisearch 的使用

Meilisearch 作為一個高效能、易用的搜尋引擎,可以應用於多種場景,比如電子商務網站、內容管理系統 (CMS)、知識庫和文件系統、媒體流平臺,以及論壇和社群網站 (如 Flarum) 等等這些都需要用到搜尋功能。

以 Flarum 論壇為例,給大家演示一下如何接入 Meilisearch 實現搜尋能力的飛躍。

Meilisearch 可以顯著提升 Flarum 的搜尋功能,為使用者提供更好的體驗,包括很多開箱即用的功能,比如錯字容忍、過濾器和同義詞,最重要的是:支援中文搜尋。

關於 Flarum 的安裝和使用方法,可參考我們之前寫的文章:Flarum 安裝和使用教程

將 Meilisearch 接入 Flarum 非常簡單,只需要以下幾步:

1. 安裝 Meilisearch SDK

在 Flarum 應用詳情介面,點選右下角的終端按鈕:

在開啟的終端中執行以下命令安裝 Meilisearch SDK:

extension require meilisearch/meilisearch-php

2. 安裝 Scout Search 擴充套件

和上面一樣,在 Flarum 容器終端中執行以下命令安裝 Scout Search 擴充套件:

extension require clarkwinkelmann/flarum-ext-scout

3. 啟用 Scout 擴充套件

在 Flarum 管理後臺中啟用 Scout 擴充套件,並選擇 Meilisearch 作為搜尋引擎,index 名稱可寫可不寫。

下面還需要配置 Meilisearch 的 URL 和金鑰。

如果你的 Meilisearch 和 Flarum 部署在同一個 Sealos 可用區,那麼可以直接使用 Meilisearch 的內網地址,進入 Meilisearch 的應用詳情頁面,點選內網地址便可複製 Meilisearch 的內網地址,然後作為上面 Scout 外掛 Meilisearch Host 的值貼上進去即可。

4. 增加 Meilisearch 記憶體

Sealos 中部署的 Meilisearch 預設只給了 128M 記憶體,如果要接入 Flarum,這個記憶體是不夠用的,需要調整到 1G 才夠用。操作方法如下:

進入 Meilisearch 的應用詳情頁面,點選右上角的 “變更”:

將記憶體調整到 1G,然後點選右上角的 “變更” 即可。

5. 匯入 Meilisearch 索引

使用以下命令將現有資料匯入 Meilisearch 索引:

php flarum scout:import-all

下面這種結果就是匯入成功了:

最後來測試一下中文搜尋功能:

完美!

總結

AI 時代,高效的搜尋功能已經成為應用成功的關鍵因素之一。Meilisearch 憑藉其卓越的效能、直觀的 API 和豐富的功能,為開發者提供了一個強大而靈活的搜尋解決方案。無論你是想構建一個小型部落格還是大規模的電商平臺,Meilisearch 基本上都能滿足你的需求。

相關文章