想要更好地控制您的搜索设置?了解我们的灵活的基础设施定价

回到主页Meilisearch 的标志
返回文章

v1.2 有哪些新功能?

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

2023 年 6 月 5 日阅读时长 4 分钟
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 的 RAM 使用。通过使用 --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 上的开发者社区:Discord

到时候见。

Meilisearch 1.16

Meilisearch 1.16

Meilisearch 1.16 引入了多模态嵌入和新的 API,用于在实例之间传输数据。

Laurent Cazanove
Laurent Cazanove2025年8月5日
Meilisearch 1.15

Meilisearch 1.15

Meilisearch 1.15 引入了新的拼写容错设置、字符串过滤器比较运算符,并改进了对中文的支持。

Carolina Ferreira
Carolina Ferreira2025年6月10日
Meilisearch 1.14

Meilisearch 1.14

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

Carolina Ferreira
Carolina Ferreira2025年4月14日
© . This site is unofficial and not affiliated with Meilisearch.