與其他替代方案的比較

    網路上有許多搜尋引擎,包括開源和其他類型的。決定哪種搜尋解決方案最適合您的專案非常重要,但也非常困難。在本文中,我們將探討 Meilisearch 與其他搜尋引擎之間的差異。

    注意

    請注意,以下描述的許多搜尋產品都在不斷發展,就像 Meilisearch 一樣。這些只是我們自己的印象,可能無法反映最近的變化。如果某些內容不準確,請隨時開啟議題或發出合併請求

    比較表

    一般概述

    MeilisearchAlgoliaTypesenseElasticsearch
    原始碼授權MIT
    (完全開源)
    封閉原始碼GPL-3
    (完全開源)
    SSPL
    非開源
    使用以下語言構建Rust
    了解我們為什麼相信 Rust.
    C++C++Java
    資料儲存使用記憶體對應的磁碟 - 不受 RAM 限制受 RAM 限制受 RAM 限制帶有 RAM 快取的磁碟

    功能

    整合與 SDK

    注意:我們僅列出每個不同搜尋引擎內部團隊正式支援的函式庫。

    找不到您希望我們支援的客戶端?提交您的想法或為其投票😇

    SDKMeilisearchAlgoliaTypesenseElasticsearch
    REST API
    JavaScript 客戶端
    PHP 客戶端
    Python 客戶端
    Ruby 客戶端
    Java 客戶端
    Swift 客戶端
    .NET 客戶端
    Rust 客戶端🔶
    開發中
    Go 客戶端
    Dart 客戶端
    Symfony
    Django
    Rails🔶
    開發中
    官方 Laravel Scout 支援
    可作為獨立模組使用

    可作為獨立模組使用
    Instantsearch
    Autocomplete
    Docsearch
    Strapi
    Gatsby
    Firebase

    組態

    文件結構描述
    MeilisearchAlgoliaTypesenseElasticsearch
    無結構描述🔶
    id 欄位為必填,且必須為字串
    巢狀欄位支援
    巢狀文件查詢
    自動文件 ID 偵測
    原生文件格式JSONNDJSONCSVJSONNDJSONJSONNDJSONCSV
    壓縮支援Gzip、Deflate 和 BrotliGzip
    將承載內容讀取為 JSON,這可能導致文件損壞
    Gzip
    關聯性
    MeilisearchAlgoliaTypesenseElasticsearch
    容錯字🔶
    需要由模糊查詢指定
    可排序的排名規則🔶
    欄位權重可以更改,但排名規則的順序無法更改。
    自訂排名規則🔶
    函式分數查詢
    查詢欄位權重
    同義詞
    停用詞
    自動語言偵測
    支援所有語言
    排名分數詳細資訊
    安全性
    MeilisearchAlgoliaTypesenseElasticsearch
    API 金鑰管理
    租戶令牌和多租戶索引
    多租戶支援

    基於角色的
    MeilisearchAlgoliaTypesenseElasticsearch
    佔位符搜尋
    多索引搜尋
    聯合搜尋
    完全詞組搜尋
    地理搜尋
    排序方式🔶
    每個索引限制為一個 sort_by 規則。索引可能必須針對每個排序欄位和排序順序進行複製

    每個搜尋查詢最多 3 個排序欄位
    篩選
    支援使用類似 SQL 語法的複雜篩選查詢。
    🔶
    不支援跨多個欄位的 OR 運算
    分面搜尋
    分面欄位必須可搜尋
    當必須傳回超過 1 千萬個分面值時,分面可能需要數秒鐘的時間
    獨特屬性
    依欄位值將文件去重複
    分組
    依欄位值將文件分組
    MeilisearchAlgoliaTypesenseElasticsearch
    語意搜尋🔶
    在 Premium 方案下
    混合搜尋🔶
    在 Premium 方案下
    嵌入生成
    OpenAI
    HuggingFace
    REST 嵌入器
    未公開
    OpenAI
    GCP Vertex AI
    提示範本未公開
    向量儲存未公開
    Langchain 整合
    GPU 支援
    CUDA
    未公開
    CUDA
    視覺化
    MeilisearchAlgoliaTypesenseElasticsearch
    迷你儀表板🔶
    雲端產品
    🔶
    雲端產品
    搜尋分析
    雲端產品

    雲端產品

    雲端產品
    監控儀表板
    雲端產品

    雲端產品

    雲端產品

    雲端產品

    部署

    MeilisearchAlgoliaTypesenseElasticsearch
    自託管
    平台支援ARM
    x86
    x64
    不適用🔶 ARM (macOS 上需要 Docker)
    x86
    x64
    ARM
    x86
    x64
    官方一鍵部署
    DigitalOcean
    Platform.sh
    Azure
    Railway
    Koyeb
    🔶
    僅適用於雲端託管解決方案
    官方雲端託管解決方案Meilisearch Cloud
    高可用性可透過 Meilisearch Cloud 取得
    執行階段相依性不適用
    向下相容性不適用
    升級路徑文件會在升級時自動重新索引不適用文件會在升級時自動重新索引文件會在升級時自動重新索引,最多 1 個主要版本

    限制

    MeilisearchAlgoliaTypesenseElasticsearch
    索引最大數量無限制1000 個,聯絡支援可增加限制無限制無限制
    索引最大大小80TiB128GB受 RAM 限制無限制
    每個屬性的最大字數無限制無限制無限制無限制
    文件最大大小無限制100KB,可設定無限制預設 100KB,可設定

    社群

    MeilisearchAlgoliaTypesenseElasticsearch
    主要專案的 GitHub 星星數42K不適用17K66K
    主要專案的貢獻者人數179不適用381,900
    公開的 Discord/Slack 社群規模2,100不適用2,00016K

    支援

    MeilisearchAlgoliaTypesenseElasticsearch
    狀態頁面
    免費支援管道即時訊息/聊天室(延遲 2-3 小時),
    電子郵件,
    公開的 Discord 社群,
    GitHub issue 和討論
    即時訊息/聊天室,
    公開的社群論壇
    即時訊息/聊天室(延遲 24-48 小時),
    公開的 Slack 社群,
    GitHub issue。
    公開的 Slack 社群,
    公開的社群論壇,
    GitHub issue
    付費支援管道支援是免費的!電子郵件電子郵件,
    電話,
    私人 Slack
    網頁支援,
    電子郵件,
    電話

    方法比較

    Meilisearch vs Elasticsearch

    Elasticsearch 被設計為後端搜尋引擎。雖然它不適合此目的,但通常用於為終端使用者建立搜尋列。

    Elasticsearch 可以處理搜尋大量資料和執行文字分析。為了使其有效用於終端使用者搜尋,您需要花時間了解更多關於 Elasticsearch 內部運作方式,以便能夠自訂和調整它以符合您的需求。

    與 Elasticsearch 不同,Elasticsearch 是一種為大量日誌資料設計的通用搜尋引擎(例如,後端搜尋),Meilisearch 旨在提供針對終端使用者的高效能即時搜尋體驗(例如,前端搜尋)。

    如果您想要提供完整的即時搜尋體驗,Elasticsearch 有時會太慢。大多數情況下,與 Meilisearch 相比,它在返回搜尋結果方面明顯較慢。

    如果您需要一個簡單易用的工具來部署容錯搜尋列,Meilisearch 是完美的選擇。它提供前綴搜尋功能,使搜尋對使用者來說直觀,並且開箱即用地立即返回具有卓越相關性的結果。

    如需更詳細的分析,了解它與 Meilisearch 的比較方式,請參閱我們關於 Elasticsearch 的部落格文章

    Meilisearch vs Algolia

    Meilisearch 的靈感來自 Algolia 的產品及其背後的演算法。我們確實研究了他們部落格文章中描述的大部分演算法和資料結構,以便實作我們自己的演算法。因此,Meilisearch 是一個基於 Algolia 和近期研究論文的新搜尋引擎。

    Meilisearch 提供類似的功能,並能像其競爭對手一樣快速達到相同的相關性水準。

    如果您是目前正在考慮轉用 Meilisearch 的 Algolia 使用者,您可能會對我們的遷移指南感興趣。

    主要相似之處

    Algolia 和 Meilisearch 之間最顯著的相似之處包括

    主要差異

    與 Algolia 相反,Meilisearch 是開源的,可以分支或自託管。

    此外,Meilisearch 是用 Rust 編寫的,這是一種現代系統級程式語言。Rust 提供速度、可攜性和彈性,這使得我們的搜尋引擎可以順暢地部署在虛擬機器、容器,甚至 Lambda@Edge 中。

    定價

    Algolia 的定價模式基於儲存的記錄數量和執行的 API 操作數量。對於中小型企業來說,它的費用可能高得令人卻步。

    Meilisearch 是一個開源搜尋引擎,可透過Meilisearch Cloud 或自託管方式取得。與 Algolia 不同,Meilisearch 定價基於儲存的文件數量和執行的搜尋操作數量。但是,Meilisearch 提供更慷慨的免費方案,允許儲存更多文件,以及更公平的搜尋使用定價。Meilisearch 還為較大的用例提供 Pro 方案,以允許更可預測的定價。

    快速瀏覽搜尋引擎領域

    開源

    Lucene

    Apache Lucene 是一個免費的開源搜尋函式庫,用於索引和搜尋全文文件。它於 1999 年由 Doug Cutting 創建,他之前曾在 Xerox 的帕羅奧圖研究中心 (PARC) 和 Apple 編寫搜尋引擎。Lucene 用 Java 編寫,旨在建立 Web 搜尋應用程式,例如 Google 和 DuckDuckGo,後者仍然使用 Lucene 進行某些類型的搜尋。

    Lucene 此後被分為幾個專案

    由於 Lucene 是許多開源或封閉源搜尋引擎背後的技術,因此它被認為是參考搜尋函式庫。

    Sonic

    Sonic 是一個用 Rust 編寫的輕量級且無結構描述的搜尋索引伺服器。Sonic 不能被視為開箱即用的解決方案,與 Meilisearch 相比,它不確保相關性排名。它不是儲存文件,而是包含一個具有 Levenshtein 自動機的反向索引。這意味著任何查詢 Sonic 的應用程式都必須使用傳回的 ID 從外部資料庫中檢索搜尋結果,然後應用一些相關性排名。

    它能夠在幾 MB 的 RAM 上運行,使其成為一個極簡且資源高效的替代資料庫工具,這些工具可能太過於笨重而無法擴展。

    Typesense

    與 Meilisearch 一樣,Typesense 是一個針對速度進行最佳化的輕量級開源搜尋引擎。為了更好地了解它與 Meilisearch 的比較方式,請參閱我們關於 Typesense 的部落格文章

    Lucene 衍生產品

    Lucene-Solr

    Solr 是 Apache Lucene 的一個子專案,由 Yonik Seeley 於 2004 年創建,如今已是全球最廣泛使用的搜尋引擎之一。Solr 是一個以 Java 編寫並建構在 Lucene 之上的搜尋平台。換句話說,Solr 是 Lucene Java API 的 HTTP 包裝器,這意味著您可以使用它來利用 Lucene 的所有功能。此外,Solr 伺服器與 Solr Cloud 結合使用,提供分散式索引和搜尋功能,從而確保高可用性和可擴展性。資料會被共享,同時也會自動複製。此外,Solr 不僅僅是一個搜尋引擎;它經常被用作文件結構化的 NoSQL 資料庫。文件儲存在集合中,這可以與關聯式資料庫中的表格相提並論。

    由於其可擴展的插件架構和可自訂功能,Solr 是一個擁有無限應用場景的搜尋引擎,即使它可以索引和搜尋文件及電子郵件附件,但它特別受到企業搜尋的歡迎。

    Bleve & Tantivy

    Bleve 和 Tantivy 是搜尋引擎專案,分別以 Golang 和 Rust 編寫,其靈感來自 Apache Lucene 及其演算法(例如,tf-idf,即 term frequency-inverse document frequency,詞頻-逆向文件頻率)。與 Lucene 一樣,兩者都是用於任何搜尋專案的程式庫;然而,它們並非即用型 API。

    原始碼開放

    Elasticsearch

    Elasticsearch 是一個基於 Lucene 程式庫的搜尋引擎,最常用於全文搜尋。它提供了一個透過 HTTP 以 JSON 存取的 REST API。其關鍵選項之一稱為索引分片,可讓您將索引劃分為多個物理空間,以提高效能並確保高可用性。Lucene 和 Elasticsearch 的設計都旨在處理大量資料流、分析日誌和執行複雜查詢。您可以對符合指定查詢的文件執行操作和分析(例如,計算所有名為「Thomas」的使用者的平均年齡)。

    如今,Lucene 和 Elasticsearch 是搜尋引擎領域的主要參與者。它們都是許多不同搜尋應用場景以及建構您自己的推薦引擎的可靠解決方案。它們是很好的通用產品,但需要正確配置才能獲得與 Meilisearch 或 Algolia 類似的結果。

    閉源

    Algolia

    Algolia 是一家以 SaaS 模式提供搜尋引擎的公司。其軟體是閉源的。在其早期階段,Algolia 提供可嵌入應用程式的行動搜尋引擎,面臨著從頭開始實施搜尋演算法的挑戰。從一開始,就決定直接為終端使用者建構一個搜尋引擎,特別是在行動應用程式或網站內實施搜尋。Algolia 在過去幾年中成功展示了容忍錯別字對於改善使用者體驗至關重要,並且同樣地,它對降低跳出率和提高轉換率的影響。

    除了 Algolia 之外,搜尋引擎市場上還有眾多 SaaS 產品可供選擇。它們大多數都使用 Elasticsearch 並微調其設定,以便擁有自訂和個人化的解決方案。

    Swiftype

    Swiftype 是一家專注於網站搜尋和分析的搜尋服務提供商。Swiftype 由 Matt Riley 和 Quin Hoxie 於 2012 年創立,自 2017 年 11 月起歸 Elastic 所有。它是一個基於 Elasticsearch 之上的端到端解決方案,這意味著它能夠利用 Elastic Stack。

    Doofinder

    Doofinder 是一項付費的站內搜尋服務,旨在以極少的設定整合到任何網站中。線上商店使用 Doofinder 來增加銷售額,旨在促進購買流程。

    結論

    每個搜尋解決方案都最適合特定應用場景的限制。由於每種類型的搜尋引擎都提供獨特的功能集,因此比較它們的效能既不容易也不相關。例如,在基於產品的資料庫上比較 Elasticsearch 和 Algolia 的速度是不公平的。對於非常大的全文資料庫也是如此。

    因此,我們無法將自己與基於 Lucene 或針對特定任務的其他搜尋引擎進行比較。

    在我們涵蓋的特定應用場景中,與 Meilisearch 最相似的解決方案是 Algolia。

    雖然 Algolia 提供最先進和強大的搜尋功能,但這種效率伴隨著昂貴的定價。此外,它們的服務主要面向大型公司。

    Meilisearch 致力於服務所有類型的開發人員。我們的目標是提供一個對開發人員友善、易於安裝和部署的工具。因為為終端使用者提供開箱即用的絕佳搜尋體驗對我們來說很重要,所以我們希望讓每個人都能以最少的努力,在無需任何財務資源的情況下,獲得最好的搜尋體驗。

    通常,當開發人員正在尋找要整合到其應用程式中的搜尋工具時,他們會選擇 ElasticSearch 或效率較低的選項。即使 Elasticsearch 不是最適合此應用場景,它仍然是一個很棒的開源解決方案。但是,它需要技術知識才能執行進階功能,因此需要更多時間來為您的業務進行自訂。

    我們的目標是成為開發人員的預設解決方案。