网络上有很多搜索引擎,包括开源的和非开源的。选择最适合您项目的搜索解决方案非常重要,但也很困难。在本文中,我们将介绍 Meilisearch 与其他搜索引擎之间的差异。
请注意,下面描述的许多搜索产品都在不断发展——就像 Meilisearch 一样。这些只是我们自己的印象,可能无法反映最近的变化。如果发现任何不准确之处,请随时打开问题或拉取请求

对比表

概述

MeilisearchAlgoliaTypesenseElasticsearch
源代码许可MIT
(完全开源)
闭源GPL-3
(完全开源)
AGPLv3
(开源)
使用...构建Rust
查看我们为什么相信 Rust.
C++C++Java
数据存储带内存映射的磁盘——不受 RAM 限制受 RAM 限制受 RAM 限制带 RAM 缓存的磁盘

功能

集成和 SDK

注意:我们只列出每个不同搜索引擎的内部团队正式支持的库。 找不到您希望我们支持的客户端?提交您的想法或投票支持它 😇
SDKMeilisearchAlgoliaTypesenseElasticsearch
REST API
JavaScript 客户端
PHP 客户端
Python 客户端
Ruby 客户端
Java 客户端
Swift 客户端
.NET 客户端
Rust 客户端🔶
WIP
Go 客户端
Dart 客户端
Symfony
Django
Rails🔶
WIP
官方 Laravel Scout 支持
可作为独立模块使用
Instantsearch
自动完成
Docsearch
Strapi
Gatsby
Firebase

配置

文档模式
MeilisearchAlgoliaTypesenseElasticsearch
无模式🔶
id 字段是必需的,并且必须是字符串
嵌套字段支持
嵌套文档查询
自动文档 ID 检测
原生文档格式JSON, NDJSON, CSVJSONNDJSONJSON, NDJSON, CSV
压缩支持Gzip、Deflate 和 BrotliGzip
将负载读取为 JSON,可能导致文档损坏
Gzip
相关性
MeilisearchAlgoliaTypesenseElasticsearch
容错🔶
需要通过模糊查询指定
可排序排名规则🔶
字段权重可以更改,但排名规则顺序不能更改。
自定义排名规则🔶
函数分数查询
查询字段权重
同义词
停用词
自动语言检测
所有语言支持
排名分数详情
安全
MeilisearchAlgoliaTypesenseElasticsearch
API 密钥管理
租户令牌和多租户索引
多租户支持

基于角色
搜索
MeilisearchAlgoliaTypesenseElasticsearch
占位符搜索
多索引搜索
联合搜索
精确短语搜索
地理搜索
排序方式🔶
每个索引限制一个 sort_by 规则。每个排序字段和排序顺序可能需要复制索引

每个搜索查询最多 3 个排序字段
过滤
支持使用类似 SQL 的语法进行复杂过滤查询。
🔶
不支持跨多个字段的 OR 操作
分面搜索
分面字段必须可搜索
当需要返回超过 1000 万个分面值时,分面可能需要几秒钟
不同属性
按字段值去重文档
分组
按字段值对文档进行分桶
AI 驱动的搜索
MeilisearchAlgoliaTypesenseElasticsearch
语义搜索🔶
高级计划中
混合搜索🔶
高级计划中
嵌入生成
OpenAI
HuggingFace
REST 嵌入器
未公开
OpenAI
GCP Vertex AI

ELSER
E5
Cohere
OpenAI
Azure
Google AI Studio
Hugging Face
提示模板未公开
向量存储未公开
Langchain 集成
GPU 支持
CUDA
未公开
CUDA
可视化
MeilisearchAlgoliaTypesenseElasticsearch
迷你仪表盘🔶
云产品
🔶
云产品
搜索分析
云产品

云产品

云产品
监控仪表盘
云产品

云产品

云产品

云产品

部署

MeilisearchAlgoliaTypesenseElasticsearch
自托管
平台支持 ARM
x86
x64
不适用🔶 ARM(macOS 上需要 Docker)
x86
x64
ARM
x86
x64
官方一键部署
DigitalOcean
Platform.sh
Azure
Railway
Koyeb
🔶
仅适用于云托管解决方案
官方云托管解决方案Meilisearch 云
高可用性可用于 Meilisearch Cloud
运行时依赖不适用
向后兼容性不适用
升级路径文档在升级时自动重新索引不适用文档在升级时自动重新索引文档在升级时自动重新索引,最多一个主版本

限制

MeilisearchAlgoliaTypesenseElasticsearch
最大索引数量无限制1000,联系支持可增加限制无限制无限制
最大索引大小80TiB128GB受 RAM 限制无限制
最大文档大小无限制100KB,可配置无限制默认 100KB,可配置

社区

MeilisearchAlgoliaTypesenseElasticsearch
主项目 GitHub 星数42K不适用17K66K
主项目贡献者数量179不适用381,900
公共 Discord/Slack 社区规模2,100不适用2,00016K

支持

MeilisearchAlgoliaTypesenseElasticsearch
状态页面
免费支持渠道即时通讯/聊天框(2-3 小时延迟),
电子邮件,
公共 Discord 社区,
GitHub 问题和讨论
即时通讯/聊天框,
公共社区论坛
即时通讯/聊天框(24-48 小时延迟),
公共 Slack 社区,
GitHub 问题。
公共 Slack 社区,
公共社区论坛,
GitHub 问题
付费支持渠道Slack 频道、电子邮件、个性化支持——无论您需要什么,我们都会提供!电子邮件电子邮件,
电话,
私人 Slack
网络支持,
电子邮件,
电话

方法比较

Meilisearch vs Elasticsearch

Elasticsearch 被设计为后端搜索引擎。尽管它不适合此目的,但它通常用于为最终用户构建搜索栏。 Elasticsearch 可以处理大量数据的搜索和文本分析。为了使其有效地用于最终用户搜索,您需要花时间更多地了解 Elasticsearch 的内部工作原理,以便能够自定义和调整它以满足您的需求。 与 Elasticsearch 不同,后者是为大量日志数据(例如,后端搜索)设计的通用搜索引擎,Meilisearch 旨在为最终用户(例如,前端搜索)提供高性能的即时搜索体验。 如果您想提供完整的即时搜索体验,Elasticsearch 有时可能太慢。大多数情况下,与 Meilisearch 相比,它返回搜索结果的速度明显慢。 如果您需要一个简单易用的工具来部署容错搜索栏,Meilisearch 是一个完美的选择。它提供前缀搜索功能,使搜索对用户来说直观,并立即返回开箱即用的出色相关性结果。 有关它与 Meilisearch 比较的更详细分析,请参阅我们关于 Elasticsearch 的博客文章

Meilisearch vs Algolia

Meilisearch 的灵感来自于 Algolia 的产品及其背后的算法。我们确实研究了他们博客文章中描述的大部分算法和数据结构,以实现我们自己的算法和数据结构。因此,Meilisearch 是一个基于 Algolia 和最新研究论文工作的新搜索引擎。 Meilisearch 提供类似的功能,并能与竞争对手一样快速地达到相同的相关性水平。 如果您是 Algolia 的现有用户,正在考虑切换到 Meilisearch,您可能会对我们的迁移指南感兴趣。

主要相似之处

Algolia 和 Meilisearch 之间最显著的相似之处包括
  • 键入即搜索、容错、分面等功能
  • 针对即时搜索体验的快速结果(答案 < 50 毫秒)
  • 无模式索引
  • 支持所有 JSON 数据类型
  • 异步 API
  • 相似的查询响应

主要区别

与 Algolia 相反,Meilisearch 是开源的,可以分叉或自托管。 此外,Meilisearch 用 Rust 编写,这是一种现代的系统级编程语言。Rust 提供了速度、可移植性和灵活性,这使得我们的搜索引擎在虚拟机、容器甚至 Lambda@Edge 中的部署成为一项无缝操作。

定价

Algolia 的定价模型基于存储的记录数量和执行的 API 操作数量。对于中小型企业来说,这可能过于昂贵。 Meilisearch 是一款开源搜索引擎,可通过 Meilisearch Cloud 或自托管方式获取。与 Algolia 不同,Meilisearch 的定价基于存储的文档数量和执行的搜索操作数量。然而,Meilisearch 提供更慷慨的免费套餐,允许存储更多文档,并为搜索使用提供更公平的定价。Meilisearch 还为大型用例提供专业版,以实现更可预测的定价。

快速了解搜索引擎格局

开源

Lucene

Apache Lucene 是一个免费开源的搜索库,用于索引和搜索全文文档。它由 Doug Cutting 于 1999 年创建,他此前曾在 Xerox 的 Palo Alto 研究中心 (PARC) 和 Apple 编写过搜索引擎。Lucene 用 Java 编写,旨在构建网络搜索应用程序,如 Google 和 DuckDuckGo,其中后者仍将 Lucene 用于某些类型的搜索。 Lucene 此后被划分为几个项目:
  • Lucene 本身:全文搜索库。
  • Solr:一个带有强大 REST API 的企业搜索服务器。
  • Nutch:一个可扩展和可伸缩的网络爬虫,依赖于 Apache Hadoop。
由于 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,即词频-逆文档频率)。与 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 不最适合此用例,它仍然是一个很好的开源解决方案。但是,它需要技术知识才能执行高级功能,因此需要更多时间根据您的业务进行自定义。 我们的目标是成为开发人员的默认解决方案。
© . This site is unofficial and not affiliated with Meilisearch.