前往主页Meilisearch 标志
返回文章
2023 年 6 月 5 日

v1.2 有什么新变化?

Meilisearch 1.2 版本为过滤器带来了新功能,并全面改进了引擎。

Laurent Cazanove
Laurent Cazanove开发者体验工程师StriftCodes
What's new in v1.2?

我们很高兴地宣布 Meilisearch v1.2 正式发布。这个小版本包含了新的过滤器功能和全面的引擎改进。让我们深入了解最值得关注的变化!

新功能:通过过滤器增强文档管理

我们很高兴通过引入用于获取和删除文档的过滤器,来改善 Meilisearch 开发者的体验。🥳

与使用过滤器一样,文档字段必须首先设置为可过滤属性

检索文档

过滤器为获取文档带来了新功能。例如,我们可以在执行删除操作之前,检查有多少文档符合某些过滤器。

因此,我们引入了一个新的端点来检索文档

**POST** /indexes/{indexUid}/documents/fetch

我们以一个包含电影的索引为例。我们将编写一个请求来检索 10 部 *恐怖* 或 *悬疑* 类型的电影。使用数组语法,我们可以在请求体中表达如下过滤器

{
  "filter": [
    "genre = Horror",
    "genre = Mystery"
  ],
  "limit": 10
}

这个新端点让您无需进行搜索请求即可探索数据。有关使用过滤器获取文档的更多信息,请参阅专用文档

删除文档

您现在可以删除与一组过滤器匹配的文档。此功能带有一个专用端点

**POST** /indexes/{indexUid}/documents/delete

以上述包含电影的索引为例,我们来编写一个请求,删除所有 *恐怖片* 或 *喜剧片*,以及由 *詹姆斯·卡梅隆* 导演的电影。这可以通过以下请求体表达

{
  "filter": [
    [ "genre = Horror", "genre = Comedy" ],
    "director = "James Cameron""
  ]
}

此请求会启动一个删除匹配文档的任务。Meilisearch 将返回一个简化的任务对象

{
  "taskUid": 42,
  "indexUid": "movies",
  "status": "enqueued",
  "type": "documentDeletion",
  "enqueuedAt": "2023-06-05T11:01:58.721841Z"
}

此任务表示异步删除操作。请务必检查任务状态,以确保文档已删除后再继续。有关删除文档的更多信息,请参阅专用文档

新功能:IS EMPTYIS NULL 过滤器运算符

这个版本为过滤器赋予了新功能。于是我们思考,如何能更进一步?也许我们可以用更多方式进行过滤。我的意思是,你难道不想在过滤时有更多的过滤器吗?

因此,我们引入了两个新的过滤器运算符:IS EMPTYIS NULLIS EMPTY 匹配具有空值的现有属性,而 IS NULL 匹配具有空值的字段。

以下是一个考虑以下文档的示例

[
  {
    "id": 0,
    "color": []
  },
  {
    "id": 1,
    "color": null
  },
  {
    "id": 2,
  }
]

新的过滤器运算符工作方式如下

  • color IS EMPTY:匹配文档 0
  • color IS NULL:匹配文档 1

请注意,IS EMPTYIS NULL 均不匹配缺少 color 字段的文档。这两个运算符也可以与 NOT 结合使用。请参阅相关文档了解更多信息。

实验性功能:减少内存使用

我们引入了一个新的实验性标志来减少 Meilisearch 的内存使用。您可以通过使用 --experimental-reduce-indexing-memory-usage CLI 标志或 MEILI_EXPERIMENTAL_REDUCE_INDEXING_MEMORY_USAGE 环境变量启动 Meilisearch 来尝试此功能。

您可以在这个 GitHub 讨论中提供反馈。

改进:相关性

我们增强了容错能力。拆分单词现在被视为拼写错误,这意味着 whit ehorse 现在可以匹配包含 white horse 的文档。然而,n-gram 和拆分单词现在排名会降低。这意味着 sun flower 现在将返回包含 Sun Flower 的文档,而不是包含 Sunflower 的文档。

改进:自动化任务删除

Meilisearch 处理诸如将文档添加到索引之类的操作是异步的。这意味着它们不会立即处理。相反,Meilisearch 将它们放入任务队列中,并按照接收顺序进行处理。从 v1.2 开始,任务队列的最大容量为 100 万。

一旦队列已满,Meilisearch 将尝试删除最旧的 100,000 个任务。Meilisearch 不会删除*未*完成(已入队或正在处理)的任务。它只会从最旧的 100,000 个任务中尽可能多地删除已完成的任务。

当任务的自动删除失败时,Meilisearch 将发出带有 `warning_` 级别的日志。

其他变化

  • 更新了 Meilisearch 处理排名规则的方式,以提高搜索一致性和延迟
  • 地理搜索排序现在在降序和升序方面都具有更高的性能
  • 由于 charabia 更新,增强了对拉丁语和阿拉伯语的语言支持

总结

以上是 Meilisearch v1.2 中最重要的变化。有关包括安全更新和错误修复在内的详尽回顾,请查阅更新日志

我们已经在准备 Meilisearch 的 1.3 版本。我们已有三个原型供您试用:分面值搜索分面值排序,以及  CONTAINS、 STARTS WITH 和 ENDS WITH 过滤器运算符。我们渴望听取您的意见,以完善最终细节。

本次发布离不开 @cymruu@GregoryConrad@inductor@jirutka@jlucktay@roy9495@Sufflopemeilisearch 的贡献。这还包括 @akeamc@DrAliRagab@goodhoko@mosuka 的工作,他们为 charabia 的上一个版本做出了贡献,以持续改进语言支持。衷心感谢我们所有出色的贡献者。🫶

您可以订阅我们的新闻通讯,随时了解最新发布、博客文章和新闻。要了解 Meilisearch 的未来并帮助塑造它,请查看我们的路线图,并参与我们的产品讨论

加入 /r/rust 上的讨论。

如需其他任何事宜,请加入我们的开发者社区 Discord

我们在那里见。

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 发布回顾:通过 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 日