由 AI 驱动的混合搜索正在进行封闭测试。 加入候补名单 即可获得提前体验!

前往主页Meilisearch 的标志
返回文章
2024 年 1 月 18 日

Meilisearch 与 Typesense 对比

比较开源搜索引擎 Meilisearch 和 Typesense 的关键功能。

Laurent Cazanove
Laurent CazanoveDX 工程师兼文案@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 和内置的查询建议。但是,自动生成文档 ID 已经在 Meilisearch 中开发中。

SDK 和集成

Typesense 和 Meilisearch 都通过 API 客户端为各种流行的编程语言(包括 JavaScript、.NET、Python、PHP 等)提供广泛的支持。

Meilisearch 在对其他语言和框架的支持方面范围略广,官方 SDK 或对 Laravel、Strapi 和 Rust 的支持。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 中受益。这些功能由 AI 和大型语言学习模型通过第三方工具(包括 OpenAI)提供支持。 

除此之外,两者在其他一些利基功能方面有所不同。Meilisearch 具有对停用词的内置支持,而如果您使用 Typesense,则需要在客户端手动实现此功能。另一方面,Typesense 提供了按指定字段对搜索结果进行分组的功能。Meilisearch 目前正在考虑此功能。

简而言之,Typesense 的字段加权功能使其在需要明确定义和优先考虑不同字段重要性的情况下具有优势。Meilisearch 提供了一种更广泛但不太针对字段的方法来管理搜索相关性。但是,Meilisearch 凭借其不断增长的 AI 搜索功能(包括混合搜索)脱颖而出。 

索引和性能

Typesense 和 Meilisearch 的一个主要区别在于快速索引性能和即时搜索功能。

Typesense 使用 RAM 进行索引存储,其性能针对速度进行了优化,因此即使是大型数据集也能实现近乎实时的搜索。这在实时产品目录或流媒体内容平台等场景中尤其有利,在这些场景中,快速更新和快速访问数据至关重要。

Meilisearch 采用略有不同的方法。它使用磁盘空间作为主要索引位置,并使用内存映射数据库,允许操作系统仅将数据库的相关部分加载到 RAM 中。除了速度之外,Meilisearch 还强调其索引过程的灵活性和可扩展性。异步索引允许处理大型数据集,而不会对搜索性能产生重大影响。

这使得 Meilisearch 非常适合数据集庞大或不断增长,并且索引速度和搜索相关性之间的平衡很重要的应用程序。例如,电子商务平台、内容管理系统 (CMS)、数字图书馆、社交媒体和流媒体服务。

处理外语

两者相比,Meilisearch 提供更广泛的语言支持,并且一直在积极改进其引擎的这一方面。Typesense 在需要复杂分词的语言(如中文、日语和阿拉伯语)方面尤其有限。

通过其分词库 Charabia [改进多语言支持](/blog/improving-meilisearchs-language-support/) 是 Meilisearch 的一个关键目标,它有效地利用其庞大且活跃的贡献者社区来改进其模型。该团队积极鼓励使用各种渠道来为语言分词的持续开发做出贡献。

Meilisearch 目前为拉丁语、中文、阿拉伯语、日语、泰语、韩语等提供了优化的支持。

另一方面,Typesense 目前使用基于 Unicode 的分词库。虽然理论上 Typesense 支持所有语言,但现实情况略有不足。Unicode 系统在处理不使用拉丁字母或西方书写习惯的语言方面并不是特别好。例如,它在处理形态丰富的语言(如俄语和土耳其语)以及没有传统单词间距的语言(中文和日语)时会遇到困难。

Meilisearch 优于 Typesense 的另一个显著优势是自动语言检测,以启动适当的分词管道。这大大简化了搜索集成,因为您无需手动指定语言或在客户端实现语言检测。

目前,尚不清楚 Typesense 正在采取哪些步骤来继续开发和扩展其语言支持,因为在其当前路线图活动问题中似乎没有与多语言或本地化相关的项目。

分析和数据可视化

Meilisearch 通过其云产品提供搜索分析。它可以跟踪搜索查询和转化,这对于理解用户行为非常有用。

Meilisearch Cloud 用户可以在帐户仪表板中访问高级搜索分析,并进行数据可视化。它可以跟踪各种指标,从搜索最多的查询到每日搜索,再到没有结果的搜索。这可以简单快速地访问有关搜索性能和用户行为的可操作见解。

自托管用户也可以从Meilisearch 的迷你仪表板中获得一些价值。这应该能很好地了解您的搜索在实践中的表现。

Typesense 为自托管和云用户提供原生搜索分析。目前,它仅跟踪搜索词的受欢迎程度并对其进行适当的排名。

社区和支持

Typesense 和 Meilisearch 都是建立在强大的社区支柱上的开源项目。凭借 4 年的先发优势,Typesense 拥有更大的公共 Discord/Slack 社区,拥有 1000 名成员,而 Meilisearch 为 400 名成员,这并不令人惊讶。

然而,Meilisearch 在利用其社区取得进展方面似乎做得更好,拥有 138 名主要项目贡献者,而 Typesense 为 37 名。这反映在 PR 的数量上。Meilisearch 拥有超过 1700 个 PR,其中 29 个仍处于打开状态。Typesense 的工作似乎不那么活跃,总共只有 250 个 PR(5 个处于打开状态)。

其他健康指标也对 Meilisearch 有利。它拥有健康的比例,只有 129 个未解决的问题,而 1536 个问题已关闭。相比之下,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

模糊搜索:实现全面指南

了解如何在应用程序中实现模糊搜索以处理拼写错误和误输入。获取实用的代码示例和最佳实践,以获得更好的用户体验。

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日