
今天,我们发布了 Meilisearch v0.21 的第一个候选版本 (RC)。这是 Meilisearch 下一个版本的第一步,也是一个非常重要的一步,因为这将是我们自三月以来的第一个主要版本。
v0.21 的很大一部分对大多数最终用户来说是相对不可见的:我们的核心团队一直在努力重构 Meilisearch 的引擎,这项工作既耗时又对我们代码库的长期健康至关重要。在这篇文章中,我想回顾一下我们为什么决定重构 Meilisearch,它如何影响了我们的产品,以及我们接下来会走向何方。
我们不会讨论 v0.20 和 v0.21 之间发生的所有变化——那将是另一篇博文的内容——但我们会触及一些我们最兴奋的新功能。
为什么需要重构?
我们最初意识到有问题是在我们的核心团队在不影响性能的情况下,添加新功能变得越来越困难的时候。我们看到我们的代码变得越来越难以维护,这对于一个开源项目来说尤其令人担忧:我们的社区是我们最大的盟友,如果我们要让我们的盟友满意,保持代码的清晰、可读和易用至关重要。我们显然已经达到了之前代码库在性能和易用性方面所能提供的极限,所以我们决定是时候进行改变了。
我们做得怎么样?
我们有很多好消息——但与任何主要软件发布一样,也有一些我们未能实现的目标。
搜索相关性
v0.21.0 将提供新的方法来提高您的搜索相关性
- 您现在可以使用数字属性作为分面——例如产品的价格或书籍的发布日期
- 这实际上是我们的用户要求的:现在 Meilisearch 中可以使用 Algolia 的
words
条件的等效功能! - 短语搜索:用户现在可以通过将查询词用双引号(
"
)括起来,强制引擎只返回精确匹配 - 现在可以对数组和对象值进行高亮显示
搜索性能
使用 Meilisearch 搜索海量数据集从未如此之快!处理包含约1.15亿文档的1GB数据集时
- 返回大量结果的查询速度提高了十倍以上:在v0.21中搜索单个字母只需不到50毫秒,而在v0.20中需要2秒
- 过滤数字时也有类似的加速:在v0.21中,大多数搜索只需不到50毫秒
索引
总结:索引在大多数情况下现在更快了,但也有例外。仍有很大的改进空间!
首先,好消息:重构后的搜索引擎使索引整体上更快了。
不幸的是,我们注意到在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 官方发布时再见!