Meilisearch 与 Typesense
比较开源搜索引擎 Meilisearch 和 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 vs Meilisearch - 关键特性比较
开发者体验
提供无缝且无忧的开发者体验是这两款搜索工具的核心。两者都提供了简单的设置过程、全面的文档和 Docker 支持,以便于部署。
两者都提供 RESTful API,可与各种编程语言和框架无缝集成。它们的 API 也相当直观且不言自明,让您只需很少的学习即可“即学即用”。
两者的区别在于细节。Meilisearch 凭借其现代化的开发者仪表板 UI 占据优势,而 Typesense 则更具传统风格。
然而,无论是哪种选项,启用和配置不同功能(如分析或语义搜索)都轻而易举。通常,云用户只需点击几下即可完成,而自托管解决方案则只需一个命令。在大多数情况下,这两种选项都提供“设置即忘”的方法,大多数搜索功能(如容错性)都能开箱即用。
Typesense 的一个可能为您节省额外开发时间的功能是自动生成的记录 ID 和内置查询建议。然而,自动文档 ID 生成已在 Meilisearch 开发中。
SDK 和集成
Typesense 和 Meilisearch 都通过 API 客户端为各种流行的编程语言(包括 JavaScript、.NET、Python、PHP 等)提供广泛支持。
Meilisearch 在对其他语言和框架的支持方面范围稍广,提供针对 Laravel、Strapi 和 Rust 的官方 SDK 或支持。Meilisearch 为各种 JAMstack 生态系统解决方案提供插件,例如 VuePress、Strapi、Gatsby 和 Firebase。
此外,Meilisearch 还为流行的托管服务提供一键部署,例如 AWS、GCP 和 DigitalOcean,以简化您在 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 都是建立在强大社区支柱上的开源项目。由于 Typesense 领先了 4 年,它拥有更大的公共 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 社区,了解即将推出的新功能。