Meilisearch 重构:v0.21 已加入讨论
MeiliSearch v0.21 即将发布!看看我们新版本幕后发生的一些变化。
今天,我们发布 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 毫秒
索引编制
TLDR;在大多数情况下,索引编制现在更快,但也有例外。还有很大的改进空间!
首先,好消息:使用重构后的搜索引擎,索引编制整体上更快。
不幸的是,我们注意到在 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!