我们很高兴地宣布,Meilisearch 的第一个主要版本发布了!它是许多人共同努力的结果。我们很自豪地发布了一个完全稳定的 Meilisearch 版本,它将确保与 Meilisearch 的未来版本兼容。我们非常感谢我们的社区,他们一直支持我们,帮助我们走到今天。

让我们来看看一些最重大的变化。您可以在 GitHub 上阅读 完整的变更日志,但我们将在本文中介绍主要的更改。

新功能:韩语支持

Meilisearch 是多语言的,并为多种语言提供了优化的支持。感谢我们出色的贡献者 qbx2,我们现在也支持韩语。

改进:语言支持

感谢我们全球社区的参与、反馈、建议和 PR,我们对所有语言支持进行了改进,其中中文的改进最为显著

我们一直在寻找改进,加入 关于中文支持的讨论 在 GitHub 上!

我们还实现了一个新的、更高效的 规范化器,以删除 重音和其他非间隔符号,从而完善了对希伯来语、泰语、阿拉伯语和拉丁语的支持。

改进:一步升级

Meilisearch v0.20 或以下版本的用户必须执行两步迁移才能使用他们数据库与 0.24 以上的任何版本一起使用。直到现在。

v1.0 与所有先前版本中的转储兼容。

我们简化了流程,以便任何人都可以顺利迁移到我们的第一个主要版本!查看我们的 更新指南 在我们的文档中。

改进:索引和搜索速度

  • 我们减少了包含多个长词的搜索请求的内存使用量。
  • 我们还降低了精确度排名规则的计算复杂度,并实施了一个缓存系统,从而显着提高了性能,尤其是在搜索查询包含多个词的情况下。
  • 在解释搜索查询时,多词同义词不再被视为常规搜索查询词,而是被视为短语。假设您将 San Francisco 和 SF 设置为同义词。以下搜索请求
    我很快要去 SF
    现在将被解释为
    我很快要去 “San Francisco”
    此更改可防止包含多词同义词的请求超过单词长度限制并降低搜索性能。同时,它消除了导致拒绝服务攻击的来源,并提高了搜索结果的相关性。
  • 我们调整了 proximity 规则的行为,使其适用于以前缀或非常短的词结尾的搜索请求,从而实现了显着的速度提升。
  • 在 v1.0 之前,如果 settings 对象包含可搜索的属性,则更新 settings 始终会触发重新索引。现在,Meilisearch 会检查是否对 settings 进行了任何更改,以避免不必要的重新索引。非常感谢 GregoryConrad 实现此功能!
  • 重大更改

    您会很高兴地知道,以下是我们将在 v2.0 发布之前进行的最后一次重大更改 🥳 您可以在一段时间内放松一下,v2.0 尚未计划 ☺️

    查看我们的 新的版本控制策略,以了解有关重大更改的更多信息。

    新的主密钥安全要求

    ‌‌为了加强安全性,当 服务器环境 设置为 production 时,Meilisearch 现在要求主密钥至少为 16 字节。如果没有提供主密钥,或者主密钥不符合标准,Meilisearch 会建议一个安全的自动生成的密钥,您可以在重新启动实例时使用该密钥。

    主键推断改进

    在创建索引或将文档添加到 Meilisearch 时,您可以显式设置主键,也可以让 Meilisearch 从您的数据集中推断主键。

    为了猜测主键(也称为推断),Meilisearch 过去会在您的第一个文档中查找一个 **包含** 字符串 id 的属性。现在,它会查找一个 **以** 字符串 id 结尾的属性。

    此外,如果检测到多个以 id 结尾的属性,Meilisearch 现在将抛出一个错误,要求您使用 更新索引端点 手动指定主键。

    新的 CLI 行为

    --max-index-size--max-task-db 已被移除,因为它们实际上并没有限制 Meilisearch 使用的磁盘空间。此更改有两个后果

    1. 由于操作系统对单个进程可分配的虚拟内存量有限制,因此 Meilisearch 数据库中可以同时存在的索引数量为
    • Linux/MacOS 约为 200
    • Windows 约为 20

    2.  索引的大小限制为 500GiB

    虽然我们计划在 v1.1 中解除上述限制,但如果这些更改中的任何一项影响到您,您的 意见 将非常有帮助。您可以在此 GitHub 讨论 中找到更多详细信息。

    自从 v0.26 中引入自动批处理功能以来,它已经证明了自己的价值。disable-auto-batching CLI 选项和相关的环境变量 MEILI_DISABLE_AUTO_BATCHING(以前一直保留用于调试目的)不再需要,已被移除。

    ‌‌我们还将移除 --snapshot-interval-sec 标志,以简化快照调度。

    之前:‌‌

    meilisearch --schedule-snapshot --snapshot-interval-sec 3600

    之后

    meilisearch --schedule-snapshot 3600
    # If no value is provided, Meilisearch will take a new snapshot every 24 hours.

    ‌‌‌‌最后,为了保持一致性,--dumps-dir CLI 选项已重命名为 --dump-dir,这更符合习惯用法,并且与其他现有选项一致。

    错误处理改进

    为了在使用 API 时提供更大的清晰度和可预测性,我们添加了细粒度的错误代码和新的 system 错误类型。您可以在 变更日志 中查看详细列表。

    贡献者

    非常感谢所有贡献者!没有您的支持,我们就无法达到这个里程碑。你们真的很棒,我们无法对您为 Meilisearch 付出的所有努力、建议、评论和时间表示足够的感谢。我们非常感谢拥有如此优秀的社区。

    本月,我们要特别感谢 @amab8901 @colbsmcdolbs @elbertronnie @funilrys @jiangbo212 @mohitsaxenaknoldus @shivaylambaMeilisearch 的帮助,以及 @amab8901 @GregoryConrad @pnhatminhMilli 的贡献。同样,我们要感谢 @choznerol @crudiedo @daniel-shuy @harshalkhachane @mosuka @qbx2 @Roms1383 @Sokom141 @yenwelCharabia 的宝贵支持。