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

前往首頁Meilisearch 的標誌
返回文章
2024 年 1 月 18 日

Meilisearch 與 Typesense 的比較

比較開源搜尋引擎 Meilisearch 和 Typesense 的主要功能。

Laurent Cazanove
Laurent Cazanove開發體驗工程師兼文案撰寫@StriftCodes
Meilisearch vs Typesense

正在為您的搜尋引擎專案在 Meilisearch 和 Typesense 之間做決定嗎?別再猶豫了!在本文中,我們將深入探討 Meilisearch 和 Typesense 的功能、特性和區別。我們將探討兩者在哪些方面表現出色,以及它們各自的優勢和劣勢。

什麼是 Typesense?

Typesense 是一個開源搜尋引擎,優先考慮易用性和快速部署。它基於 C++ 構建,第一個提交發佈於 2015 年,其原始程式碼在 GNU 通用公共許可證 (v.3.0) 下提供。最初是一個自託管的開源搜尋引擎,現在也提供付費的託管雲端解決方案。 

Typesense 以其閃電般快速、容錯的搜尋功能而聞名,可確保高效的使用者體驗。其功能包括即時搜尋結果、自動建議、容錯、相關性和簡單的配置過程。這使其成為中小型企業可行的選擇。 

它還涵蓋了一些獨特的用例,例如用於地理空間和分面搜尋的高級配置。

什麼是 Meilisearch?

Meilisearch 於 2018 年推出,是一個開源 (MIT 許可證) 搜尋引擎。Meilisearch 的主要價值在於提供一個開發人員友好的、即插即用的搜尋解決方案,可處理 90% 的開箱即用案例。

Meilisearch 基於 Rust 建構,這使其能夠建構高效能、可擴展和安全的應用程式。Meilisearch 迎合廣泛的使用者群,重點關注中小型企業的需求。其突出的功能包括閃電般的搜尋速度和現代化的開發人員環境。

與 Typesense 一樣,它既可以作為開源的自託管二進位檔,也可以作為託管雲端解決方案提供。雖然兩者在理念和功能方面有很多相似之處,但仍有一些重要的細微差別使它們與眾不同。 

Meilisearch 不僅提供無與倫比的索引速度和強大的多語言支援,而且其龐大的社群也積極參與其快速開發。

Typesense 與 Meilisearch - 主要功能比較

開發者體驗

提供無縫且輕鬆的開發人員體驗是這兩種搜尋工具的核心。兩者都提供簡單的設定過程、全面的文件和 Docker 支援以實現簡單部署。 

兩者也都採用 RESTful API,可與各種程式語言和框架無縫整合。它們的 API 也相當直觀且不言自明,讓您可以以最小的學習曲線「隨取隨用」。

這兩者之間的差異在於細節。Meilisearch 的優勢在於其現代化的開發人員儀表板 UI,而 Typesense 則具有更傳統的感覺。 

但是,使用任何一種選項都可以輕鬆啟用和配置不同的功能(例如分析或語意搜尋)。通常,雲端使用者只需點擊幾下即可完成,而自託管解決方案只需要一個命令。在大多數情況下,任一選項都提供「設定後無需再管」的方法,大多數搜尋功能(如容錯)都可以開箱即用。 

Typesense 的一項功能可能會節省額外的開發時間,即自動產生的記錄 ID 和內建的查詢建議。然而,Meilisearch 已在開發自動產生文件 ID的功能。

SDK 和整合

Typesense 和 Meilisearch 都透過各種熱門程式語言(包括 JavaScript、.NET、Python、PHP 等)的 API 用戶端提供廣泛的支援。

Meilisearch 在對其他語言和框架的支援方面範圍略廣,提供 Laravel、Strapi 和 Rust 的官方 SDK 或支援。Meilisearch 為各種 JAMstack 生態系統解決方案提供外掛程式,例如 VuePressStrapiGatsby 和 [Firebase](/blog/firebase-meilisearch/?utm_campaign=comparisons&utm_source=blog&utm_medium=vs-typesense。

此外,Meilisearch 還為熱門的託管服務(如 AWSGCPDigitalOcean)提供一鍵部署,以簡化 DevOps 中的部署。更不用說 Platform.sh、Azure、Railway 和 Koyeb 的官方一鍵部署。這證明了 Meilisearch 的主要承諾之一:提供將 Meilisearch 整合到任何專案的簡單方法。

兩種解決方案都為開源 Instantsearch.js 開發了整合,使得可以輕鬆將分析資料傳送到平台。使用任何一種解決方案,您都可以選擇透過 instantsearch.js 實作客戶端分析,並與第三方分析服務整合。

相關性和容錯

容錯和提升相關性的功能對於改善使用者體驗和整體搜尋效能至關重要。Meilisearch 和 Typesense 都內建容錯和相關性,並且可以隨時使用。

Typesense 允許加權或提升欄位以提高相關性。這樣,您可以根據您的應用程式輕鬆確保某些欄位中的比對對搜尋結果排名具有更高的影響。例如,在電子商務產品目錄中,開發人員可以為產品標題欄位分配比描述欄位更高的權重。

Meilisearch 雖然提供強大的容錯和相關性調整,但目前不提供欄位加權。相反,它側重於整體上下文和使用自訂排名規則來優化搜尋結果。這種方法提供了靈活性,但在特定欄位相關性是優先事項時可能需要更多微調。

但是,欄位提升仍在 Meilisearch 中進行中。此功能將允許開發人員在搜尋結果中提升或「埋藏」(即降低排名)符合特定條件的文件。

這兩種產品都提供語意搜尋功能。但是,Meilisearch 可以為您處理產生向量嵌入,讓您無需設定額外的基礎結構即可受益於 AI。這些功能透過第三方工具(包括 OpenAI)由 AI 和大型語言學習模型提供支援。 

除此之外,兩者在其他一些特定的功能方面有所不同。Meilisearch 具有對停用字的內建支援,而如果您使用 Typesense,則需要在客戶端手動實作此功能。另一方面,Typesense 提供按指定欄位分組搜尋結果的功能。Meilisearch 目前正在考慮此功能

簡而言之,在需要明確定義和優先考慮不同欄位重要性的情況下,Typesense 的欄位加權功能使其具有優勢。Meilisearch 提供更廣泛但較少針對欄位的方法來管理搜尋相關性。但是,Meilisearch 憑藉其不斷增長的AI 搜尋功能(包括混合搜尋)脫穎而出。 

索引和效能

Typesense 和 Meilisearch 的主要區別在於快速索引效能,具有即時搜尋功能。

Typesense 使用 RAM 作為其索引儲存,其效能針對速度進行了最佳化,因此即使大型資料集也可以近乎即時搜尋。這在即時產品目錄或串流內容平台等場景中尤其有利,在這些場景中,快速更新和快速存取資料至關重要。

Meilisearch 採用稍微不同的方法。它使用磁碟空間作為其主要的索引位置,並搭配記憶體對應資料庫,讓作業系統僅將資料庫的相關部分載入 RAM 中。除了速度之外,Meilisearch 也強調其索引過程的彈性和可擴展性。非同步索引允許處理大型資料集,而不會對搜尋效能產生重大影響。

這使得 Meilisearch 非常適合資料集龐大或不斷增長,且索引速度和搜尋相關性之間的平衡很重要的應用程式。例如,電子商務平台、內容管理系統 (CMS)、數位圖書館、社交媒體和串流服務。

處理外語

在這兩者之間,Meilisearch 提供更廣泛的語言支援,並積極致力於改進其引擎的這方面。Typesense 在處理需要複雜分詞的語言(如中文、日文和阿拉伯文)時尤其有限。

[改進多語言支援](/blog/improving-meilisearchs-language-support/) 透過其分詞函式庫 Charabia 是 Meilisearch 的關鍵目標,它有效地利用了其龐大且活躍的貢獻者社群來改進其模型。該團隊積極鼓勵使用各種管道來為其語言分詞的持續開發做出貢獻。

Meilisearch 目前提供對 拉丁文、中文、阿拉伯文、日文、泰文、韓文等的優化支援。

另一方面,Typesense 目前使用基於 Unicode 的分詞函式庫。雖然理論上 Typesense 提供對所有語言的支援,但實際上卻略有不足。Unicode 系統並不擅長處理不使用拉丁字母或西方書寫習慣的語言。例如,它在處理詞法豐富的語言(如俄語和土耳其語)以及沒有傳統字詞間距的語言(中文和日文)時會遇到困難。

Meilisearch 相較於 Typesense 的另一個顯著優勢是自動語言偵測,以啟動適當的分詞流程。這大大簡化了搜尋整合,因為您不需要手動指定語言或在用戶端實作語言偵測。

目前,Typesense 正在採取哪些步驟來繼續開發和擴展其語言支援尚不明確,因為在其目前的路線圖活躍問題中似乎沒有與多語言或本地化相關的項目。

分析與資料視覺化

Meilisearch 透過其雲端產品提供搜尋分析。它可以追蹤搜尋查詢和轉換,這有助於了解使用者行為。

Meilisearch Cloud 用戶可以在帳戶儀表板中直接存取進階搜尋分析,並進行資料視覺化。它會追蹤各種指標,從搜尋最多的查詢到每日搜尋再到沒有結果的搜尋。這允許簡單、快速地存取有關搜尋效能和使用者行為的可行見解。

自架用戶也可以從Meilisearch 的迷你儀表板中獲得一些價值。這應該可以讓您清楚了解您的搜尋在實務中的效能表現。

Typesense 為自架和雲端用戶提供原生搜尋分析。目前,它僅追蹤搜尋詞彙的熱門程度並適當排名。

社群與支援

Typesense 和 Meilisearch 都是建立在強大社群基礎上的開源專案。憑藉 4 年的領先優勢,Typesense 擁有更大的公共 Discord/Slack 社群並不令人意外,其人數為 1,000 人,而 Meilisearch 為 400 人。

然而,Meilisearch 在利用其社群來推動進展方面似乎做得更好,其主要專案貢獻者為 138 人,而 Typesense 為 37 人。這反映在 PR 的數量上。Meilisearch 擁有超過 1,700 個 PR,其中 29 個仍處於開啟狀態。Typesense 的工作活躍程度似乎較低,總共只有 250 個 PR(5 個開啟)。

其他健康指標也對 Meilisearch 有利。它的開啟問題數量只有 129 個,相較於已關閉的 1,536 個問題,比例很健康。相比之下,Typesense 有 425 個開啟問題,只有 713 個已關閉的問題。

Meilisearch 在 Github 星星方面也明顯領先,擁有 40.7k 個星星,而 Typesense 只有 16.1k 個。

然而,兩者似乎對未來都充滿雄心壯志,在各自的路線圖上都有大量的計畫功能和改進。

在支援方面,免費使用 Meilisearch 或 Typesense 的開發人員可以獲得社群支援以及電子郵件或即時聊天支援。儘管如此,兩者都已透過其雲端產品推出付費支援。Typesense 提供多層級支援計畫結構。雖然 Meilisearch 正計畫未來提供類似的選項,但您目前可以與他們討論您的需求以獲得客製化的支援解決方案。

Typesense 的挑戰

正如我們所提到的,Typesense 相較於 Meilisearch 的一個不足之處是其有限的語言支援。

然而,與其他搜尋引擎一樣,由於其選擇的開發路徑,它也存在一些固有的缺點。首先,將整個索引儲存在記憶體中意味著您的資料集大小受到可用資源的限制。因此,雖然它很簡單且快速,但在擴展方面可能會面臨一些挑戰。

Typesense 的開發絕非靜態,但其社群較小,開發速度也比 Meilisearch 慢。雖然它在某些方面(如向量搜尋)具有領先優勢,但差距正在縮小。並且在其他領域(如語言支援和分析)已被 Meilisearch 超越。

Meilisearch 的挑戰

在追求開發快速、高效且對開發人員友好的搜尋引擎的過程中,Meilisearch 也做出了一些有意的設計取捨。

首先,Meilisearch 在每個搜尋詞彙中最多只考慮 10 個單字。雖然它確實在一定程度上限制了搜尋詞彙的複雜性,但有助於保持較低的反應時間。

同樣地,它對每個屬性的最大單字數、每個文件的屬性數以及每個索引的文件數(約 43 億)等施加了限制。同樣,這些限制的目的是為了減少對效能的可能影響,同時滿足絕大多數使用案例的需求。

自架的 Meilisearch 也不支援分散式架構,儘管它為 Meilisearch Cloud 用戶提供高可用性

最後,Meilisearch 在基於欄位加權和分組微調搜尋結果方面略顯落後。

定價和商業產品

兩者都為自架專案提供免費且開源的搜尋解決方案,並且在可預見的未來應該會保持這種方式。真正的差異點在於它們的雲端產品。

Typesense 採用按使用量付費的模式。您會獲得一個專用叢集,並根據您所需的 RAM 大小按小時收費。您還需要考慮傳出頻寬的成本,其中包括 API 回應以及在叢集之間複製索引或組態變更。

最經濟實惠的設定每月費用約為 21.60 美元起。但是,對於更高的 RAM 和處理需求,每月費用可能會迅速增加到數千美元(或數萬美元)。

相比之下,Meilisearch 提供基於階層的定價結構,如果您超出方案的限制,則會產生超額費率。定價從每月 30 美元起(僅略高於 Typesense 的最基本配置),其中包括 100,000 次搜尋和 100 萬個文件(索引資料項目)。

雖然兩者的定價都具有一定程度的不可預測性,但 Meilisearch 可以說是兩者中較為穩定的。如果您知道您的平均每月搜尋量以及您需要多少資料項目,您應該可以輕鬆計算出您的成本。

理論上,Typesense 每月可以為您節省幾美元。但是,其傳出頻寬費率意味著,實際上,根據您的使用情況和組態,它最終很可能幾乎花費相同(或更多)的費用。

何時應該考慮使用 Typesense 而不是 Meilisearch?

Typesense 用於地理空間和多面向搜尋的進階組態使其成為需要複雜查詢功能的應用程式的理想選擇,例如基於位置的服務或廣泛的產品篩選。

這使其成為許多具有龐大產品目錄的電子商務平台的首選,在這些平台上,欄位加權是一個重要的轉換因素。或者對於串流平台來說,結果通常會根據地區進行多面向分類,並且對搜尋查詢的語義理解對於尋找相關結果非常重要。

在某些情況下,Meilisearch 的已知限制(例如其 10 個單字的查詢限制)可能並不適用。例如,如果您主要索引複雜資料,例如學術、醫療或研究資料庫。

何時應該考慮使用 Meilisearch 而不是 Typesense?

Meilisearch 在需要強大多語言支援和進階索引功能的場景中表現良好。它特別適合具有全球受眾的平台,在這些平台上,支援各種語言和字母表至關重要。

Meilisearch 具有對開發人員友好的環境,即插即用的設定,適用於開發時間和資源有限的專案。其可擴展的架構也使其成為大型動態資料庫的理想選擇,例如數位圖書館或廣泛的內容管理系統。

尋求現代化 UI 和廣泛社群支援的開發人員可能會發現 Meilisearch 更符合他們的喜好。長期專案將繼續受益於其快速的開發速度。


了解更多關於 Meilisearch 可以為您的業務帶來的價值

與搜尋專家交談


結論

您在使用 Typesense 和 Meilisearch 時都可以期望獲得對開發人員友好的體驗、閃電般的快速效能以及即時的邊打字邊搜尋體驗。

Typesense 在為網站和應用程式提供快速、容錯字搜尋體驗的領域中是一個開拓者。Meilisearch 沿襲了這種傳統,但也引入了獨特的功能,使其與 Typesense 區分開來。

Meilisearch 透過直覺的儀表板、簡單的一鍵部署以及蓬勃發展的社群,優先考慮開發人員體驗。此外,它還透過內建功能(如搜尋分析和改進的多語言支援)節省了大量時間。Typesense 的突出功能是地理空間和多面向搜尋。

您可以透過此線上示範查看 Meilisearch 的實際運作情況。此外,您可以隨意查看其公開路線圖GitHub 社群,看看您可以期待哪些新的和即將推出的功能。

Fuzzy Search: A Comprehensive Guide to Implementation

模糊搜尋:實作的完整指南

了解如何實作模糊搜尋來處理應用程式中的錯字和拼寫錯誤。取得實用的程式碼範例和最佳實務,以獲得更好的 UX。

Ilia Markov
Ilia Markov2024 年 12 月 18 日
Software Engineering Predictive Search: A Complete Guide

軟體工程預測搜尋:完整指南

了解如何在您的軟體應用程式中實作預測搜尋。探索關鍵概念、最佳化技術和真實範例,以增強使用者體驗。

Ilia Markov
Ilia Markov2024 年 12 月 11 日
Searching across multiple languages

跨多語言搜尋

了解實作進階多語言搜尋是多麼容易,並讓您的使用者獲得他們應得的無縫且相關的結果——無論使用哪種語言。

Quentin de Quelen
Quentin de Quelen2024年9月26日