重构 Meilisearch:v0.21 正式登场
MeiliSearch v0.21 即将推出!来看看我们新版本内部的一些变化。

今天,我们发布了 Meilisearch v0.21 的第一个发布候选版本 (RC)。这是 Meilisearch 下一个版本的第一步,也是一个非常重要的一步,因为这将是我们自三月以来的第一个主要版本。
v0.21 的大部分内容对大多数终端用户来说将是相对不可见的:我们的核心团队一直在努力重构 Meilisearch 的引擎,这项工作既耗时又对我们代码库的长期健康至关重要。在这篇文章中,我想阐述我们为什么决定重构 Meilisearch,它如何影响了我们的产品,以及我们接下来会走向何方。
我们不会讨论 v0.20 和 v0.21 之间所有变化——那将是另一篇博文的内容——但我们将提及几个我们最兴奋的新功能。
为什么需要重构?
我们最初意识到出了问题,是当我们的核心团队在不影响性能的情况下添加新功能变得越来越困难时。我们看到我们的代码变得越来越难以维护,这对于一个开源项目来说尤其令人担忧:我们的社区是我们最大的盟友,如果想让我们的盟友满意,保持代码整洁、可读和易于使用至关重要。我们显然已经达到了旧代码库在性能和易用性方面能提供给我们的极限,所以我们决定是时候做出改变了。
进展如何?
我们有很多好消息——但是,正如任何主要的软件发布一样,我们也有一些未能实现的目标。
搜索相关性
v0.21.0 将提供使您的搜索更相关的新方法
- 您现在可以将数字属性用作分面——例如产品的价格或图书的发布日期
- 这实际上是我们的用户所要求的:Algolia 的
words
标准的等效功能现已在 Meilisearch 中提供! - 短语搜索:用户现在可以通过将查询词用双引号 (
"
) 括起来,强制引擎只返回精确匹配结果 - 高亮显示现已支持数组和对象值
搜索性能
使用 Meilisearch 搜索大型数据集从未如此之快!在包含约 1.15 亿文档的 1GB 数据集上
- 返回大量结果的查询速度提升了十倍以上:在 v0.21 中,搜索单个字母所需时间不到 50 毫秒,而 v0.20 中则需要 2 秒。
- 对数字进行过滤时也有类似的提速:在 v0.21 中,大多数搜索所需时间不到 50 毫秒。
索引
TLDR; 在大多数情况下,索引现在更快了,但也有例外。仍有很大的改进空间!
首先,好消息是:重构后的搜索引擎使索引速度整体上更快了。
不幸的是,我们发现在 v0.21 中解析包含冗长描述值(例如带有摘录和摘要的博客文章列表或科学文章)的数据集时,性能有所下降。这并不完全出乎意料:新的搜索引擎需要更多的计算,这意味着索引可能需要更长时间。这并非理想情况,但我们宁愿发布一个尚未完全优化但包含所有新功能的产品,也不愿推迟 v0.21 的发布。请放心,我们正在尽最大努力改进索引性能。
另一个坏消息是:尽管我们已经在正确方向上迈出了重要一步,并全面降低了内存消耗,但 Meilisearch 有时因内存使用过度而崩溃的问题仍未解决。这将是我们在未来工作的另一个优先事项。
是否存在破坏性变更??
确实存在!我们尽力避免破坏性变更,但当我们想要持续改进并使我们的 API 更易于使用时,这并非总是可能。v0.21 重构带来的两个最大变化是
- 参数
filters
和facetFilter
已被filter
替代。两个参数做几乎相同的事情,在过滤查询结果时增加了不必要的复杂性。 - 我们认为一些命名更改使 Meilisearch 的使用更加直观。这些更改都不会对最终用户体验产生任何影响。完整列表将在 v0.21 正式发布时提供。
接下来?
一旦 v0.21 在未来三个月内正式发布,我们将恢复每月发布周期。我们特别期待开发 sortBy
和地理搜索——这两个功能是我们的用户强烈要求的功能。我们清晰地听到了您的声音!
如果您对 Meilisearch 即将发布的版本感到好奇,请随时测试并向我们提供尽可能多的反馈——我们依赖您来发现尽可能多的剩余错误。您可以在 GitHub 上下载发布候选版本。
此外,一条建议:我们不建议在生产环境中使用此 RC 版本。我们相信 v0.21 RC1 看起来相当不错,但在正式推出之前,我们仍有一些问题需要解决。
再次感谢,期待 v0.21.0 官方版本发布时再见!