今天我们发布了 Meilisearch v0.21 的第一个候选版本 (RC)。这是迈向 Meilisearch 下一版本的重要一步,并且自 3 月份以来,这将是我们第一次重大发布。
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 毫秒
索引
简而言之:在大多数情况下,索引速度现在更快,但也有一些例外。还有很大的改进空间!
首先,好消息:通过重构的搜索引擎,索引速度总体更快。
不幸的是,我们注意到在 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!