在您的搜索引擎项目中选择 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 都为各种流行的编程语言提供广泛的支持,包括 JavaScript、.NET、Python、PHP 等。
Meilisearch 在对其他语言和框架的支持方面略胜一筹,提供官方 SDK 或对 Laravel、Strapi 和 Rust 的支持。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 改进多语言支持是 Meilisearch 的一个关键目标,它有效地利用了其庞大而活跃的贡献者社区来改进其模型。该团队积极鼓励使用各种渠道为其语言分词的持续开发做出贡献。
Meilisearch 目前提供针对拉丁语、中文、阿拉伯语、日语、泰语、韩语等的优化支持。
另一方面,Typesense 目前使用基于 Unicode 的分词库。虽然理论上 Typesense 支持所有语言,但实际情况却有点差强人意。Unicode 系统不善于处理不使用拉丁字母或西方书写习惯的语言。例如,它难以处理形态丰富的语言(如俄语和土耳其语),以及没有传统词语间隔的语言(中文和日语)。
Meilisearch 相比 Typesense 另一个重要优势是自动语言检测,以启动适当的分词流程。这极大地简化了搜索集成,因为您不需要手动指定语言或在客户端实现语言检测。
目前,尚不清楚 Typesense 正在采取哪些步骤来继续开发和扩展其语言支持,因为其当前路线图或活动问题中似乎没有与多语言或本地化相关的条目。
分析和数据可视化
Meilisearch 通过其云产品提供搜索分析。它跟踪搜索查询和转化率,这有助于了解用户行为。
Meilisearch 云用户可以访问高级搜索分析,并在帐户仪表板中进行数据可视化。它跟踪各种指标,从搜索次数最多的查询到每日搜索次数,再到没有结果的搜索次数。这允许轻松快速地访问有关搜索性能和用户行为的可操作见解。
自托管用户也可以从Meilisearch 的迷你仪表板中获得一些价值。这应该可以很好地了解您的搜索在实践中的表现。
Typesense 为自托管和云用户提供本地搜索分析。目前,它只跟踪搜索词的流行程度,并对它们进行适当的排名。
社区和支持
Typesense 和 Meilisearch 都是基于强大的社区支柱构建的开源项目。凭借 4 年的领先优势,Typesense 拥有更大的公共 Discord/Slack 社区,为 1000 人,而 Meilisearch 为 400 人。
然而,Meilisearch 在利用其社区推动进步方面似乎做得更好,拥有 138 位主要项目贡献者,而 Typesense 只有 37 位。这反映在 PR 的数量上。Meilisearch 的 PR 数量远远超过 1700 个,其中 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 云用户提供高可用性。
最后,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 社区,了解您可以期待哪些新功能和即将推出的功能。