回到主页Meilisearch 的标志
返回文章列表
2022年10月3日

v0.29 新特性

本月发布带来了备受期待的新功能:匹配策略自定义。它还在索引速度、过滤器和密钥管理方面带来了许多改进。

Carolina Ferreira
Carolina FerreiraMeilisearch 开发者布道师@CarolainFG
What’s new in v0.29

本文介绍了 Meilisearch 最新版本的一些主要变化。欲了解更多详情,请阅读 GitHub 上的完整更新日志

新功能:匹配策略

v0.29 引入了一个新的搜索参数:matchingStrategy。此参数允许您在搜索时定义 Meilisearch 应如何匹配查询词

  • last:首先返回包含所有查询词的文档。然后通过减少匹配中存在的查询词数量来检索其他结果:Meilisearch 将从查询的末尾开始,一次删除一个查询词,并将任何新匹配项包含到结果列表中。自 v0.21 以来,这一直是默认行为,并将保持为默认策略。
  • all:只返回包含所有查询词的文档。

示例

curl \
  -X POST '<http://localhost:7700/indexes/movies/search>' \
  -H 'Content-Type: application/json' \
  --data-binary '{ "q": "american ninja", "matchingStrategy": "all" }'

通过上述请求,Meilisearch 将只返回同时包含 "american" 和 "ninja" 的文档。

我们希望这项新功能能鼓励那些仍在 v0.20 版本(Meilisearch 最后一个默认使用 all 匹配策略的官方版本)上工作的人更新到我们的最新版本,并受益于此后引入的新功能:排序地理搜索精细 API 密钥权限等等!如果您仍在 v0.20 版本,并且暂时不打算升级,我们很乐意了解是什么原因阻碍了您。

您可以通过匹配策略演示测试此功能,并在专门的博客文章中了解更多信息。改进:索引性能

我们加快了索引速度,特别是以下操作

  • 分面索引:我们修改了算法以提高可过滤属性的索引速度
  • 文档删除和更新
  • 我们引入了 软删除。 这是一种技术,其中使用一个标志将数据标记为已删除,使其对所有用户都不可访问,而无需实际从数据库中删除。文档会在稍后删除,在它们占用设备过多空间之前。因此,删除磁盘上记录的时间被推迟,并且不会延迟索引过程。
  • 在重新索引时,Meilisearch 现在会检测文档的精确相同版本是否已存在,如果存在,则不再对其进行索引

行为变更:自动批量处理

在 v0.26 中,我们引入了一个实验性功能:自动批量处理。激活后,自动批量处理会自动合并连续的文档添加请求,显著加快索引过程。

我们很高兴地宣布,自动批量处理现在是默认的索引行为,并且不再是实验性功能啦  🥳

这意味着您不再需要使用 **--enable-auto-batching** CLI 标志来启用它。使用 --enable-auto-batching 现在将抛出以下错误

error: Found argument '--enable-auto-batching' which wasn't expected, or isn't valid in this context

	Did you mean '--disable-auto-batching'?

	If you tried to supply `--enable-auto-batching` as a value rather than a flag, use `-- --enable-auto-batching`

USAGE:
    meilisearch --disable-auto-batching

以下自动批量处理自定义选项也已被移除,如果使用将抛出错误,因此在升级到 v0.29 之前,请确保您的应用程序未使用其中任何一个

  • --debounce-duration-sec
  • --max-batch-size
  • --max-documents-per-batch

如果您尚未激活自动批量处理功能,那么您无需做任何事情,只需享受提升后的索引速度即可 🏎️

🧐 您可能已经注意到上面的错误消息:如果出于某种原因您不希望 Meilisearch 自动批量处理请求,现在可以使用一个新的 CLI 标志来停用此功能:--disable-auto-batching

我们正在不断努力改进我们的搜索引擎,您的反馈至关重要。如果您在文档索引速度方面遇到任何问题,如果您能在此讨论中告知我们,我们将不胜感激。

改进:过滤器

我们添加了两个新的过滤器运算符:INEXISTS

  • IN 运算符选择指定字段包含至少一个给定值的文档
  • EXISTS 运算符检查字段是否存在。请注意,空值或 null 值的字段仍被视为存在

给定以下书籍数据集

[
  { "id": 1, "title": "Pride and Prejudice", "genres": ["romance"] },
  { "id": 2, "title": "Le Petit Prince", "genres": [] },
  { "id": 3, "title": "Alice In Wonderland" },
  { "id": 4, "title": "The Hobbit", "genres": ["adventure", "fantasy"] },
  { "id": 5, "title": "A Game of Thrones", "genres": ["fantasy"] },
]

表达式 genres IN [fantasy, adventure] 将返回文档 45

表达式 genres EXISTS 将返回文档 1245

这两个运算符可以与  NOT (!=) 运算符结合使用。

行为变更:!= (NOT) 过滤器运算符

!= (NOT) 过滤器运算符返回不满足条件的文档。

考虑到以下文档

{ "id": 1, "product": "T-shirt", "price": 20 }
{ "id": 2, "product": "T-shirt" }
{ "id": 3, "product": "T-shirt", "price": 30 }

NOT price = 20 应返回所有 price 属性不等于 20 的文档。

在 v0.29 中,!= (NOT) 过滤器匹配缺少指定属性的文档。在上述示例中,这意味着 Meilisearch 将返回文档 23

在 v0.29 之前,Meilisearch 不会包含缺少 price 属性的结果。在上述示例中,v0.28 只会返回文档 3

您可以通过将 != (NOT) 运算符与新的  EXISTS 运算符结合使用,确保过滤器只返回包含指定属性的文档:price EXISTS AND price != 20 将只返回文档 3

改进:密钥管理

管理密钥时,在 actions 数组中使用 * 通配符可以访问所有端点

{
      "name": "Default Admin API Key",
      "description": "Use it for anything that is not a search operation. Caution! Do not expose it on a public frontend",
      "key": "380689dd379232519a54d15935750cc7625620a2ea2fc06907cb40ba5b421b6f",
      "uid": "20f7e4c4-612c-4dd1-b783-7934cc038213",
      "actions": ["*"],
      "indexes": ["*"],
      "expiresAt": null,
      "createdAt": "2021-08-11T10:00:00Z",
      "updatedAt": "2021-08-11T10:00:00Z"
 }

现在,多亏了我们的贡献者,它也可以用作通配符来表示单个特定路由的所有端点 🙌

无需列出每个端点,您可以将 * 字符附加到所需路由。例如,documents.* 授权访问所有与文档相关的端点。

改进:泰语支持

我们亲爱的贡献者 @aFluffyHotdog 引入了对泰语的优化支持 🥳

我们一直在寻求让 Meilisearch 的语言支持变得更好的方法。我们从母语使用者那里获得的反馈越多,就越容易理解如何提高这些语言的性能和搜索相关性。

想帮助我们支持您的语言吗?贡献代码吧!如果您需要指导或帮助,请随时联系我们;我们期待与您合作!

贡献者

如果没有我们社区的支持,Meilisearch 就无法像今天这样发展。你们真的非常棒,我们对您为 Meilisearch 付出的所有努力、建议、评论和时间表示衷心感谢。本月,我们特别感谢 @evpeople@Mcdostone@pavo-tusker@phdavis1027@ryanrussell@VasiliySoldatkin 帮助我们完善 Meilisearch,感谢 @GraDKh 帮助我们完善 Milli,以及 @aFluffyHotdog@matthias-wright@mosuka 帮助我们完善分词器 Charabia

各位,就这些了!记得查看更新日志以获取完整的发布说明,下次再见!

Meilisearch 1.14

Meilisearch 1.14

Meilisearch 1.14 引入了新的实验性功能,包括复合嵌入器和嵌入缓存以提升性能。它还增加了核心功能,例如粒度可过滤属性和按 ID 批量文档检索。

Carolina Ferreira
Carolina Ferreira2025年4月14日
Meilisearch AI launch week recap

Meilisearch AI 发布周回顾

Meilisearch AI 发布回顾:利用人工智能和个性化改造搜索

Maya Shin
Maya Shin2025年3月28日
Introducing Meilisearch's next-generation indexer: 4x faster updates, 30% less storage

推出 Meilisearch 的下一代索引器:更新速度快 4 倍,存储空间减少 30%

2024 版索引器通过并行处理、优化的 RAM 使用和增强的可观察性彻底改变了搜索性能。查看我们最新版本中的新功能。

Louis Dureuil
Louis Dureuil2025年2月26日