Meilisearch 重构:v0.21 已加入讨论
MeiliSearch v0.21 即将到来!来看看我们新版本的幕后花絮。

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